我可以编辑我的 .htaccess 来编写一些 WordPress URL(自定义重写)吗?

Posted

技术标签:

【中文标题】我可以编辑我的 .htaccess 来编写一些 WordPress URL(自定义重写)吗?【英文标题】:Can I edit my .htaccess to write some WorldPress URL's (custom rewrites)? 【发布时间】:2014-03-07 18:47:57 【问题描述】:

所以问题来了:我们不喜欢 WordPress 不允许重复 slug 的事实,即使是子类别,这意味着我们不能有如下网址:

product-1/guides
product-1/articles
product-2/guides
product-2/articles

这很烦人!我们正在考虑的一种解决方案是像这样设置我们的 slug:

product-1/product-1-guides
product-1/product-1-articles
product-2/product-2-guides
product-2/product-2-articles

但是在我们的 htaccess 中——我们可以使用它来获取这些 url 并将它们重写为更漂亮的 url,从子文件夹中删除产品名称吗?我们不介意对这些进行硬编码,因为我们在网站上只会有 5-10 种产品。

这将使 WordPress 安装对独特的 slug 感到满意,但 SEO 会在框中打勾,并带有更好看的 url。

请教一下语法?

编辑 1:

在查看了 WordPress 重写 API 之后,我无法通过我认为非常简单的测试获得任何结果。我的functions.php中有以下代码,它在我测试回声时正在运行,但没有进行重写?

add_action( 'init', 'productRewrites' );

function productRewrites() 
    add_rewrite_rule('^wordpress/james?','index.php?author_name=jwilson','top');

当我击中时没有任何反应:

mysite.com/wordpress/james

编辑 2:

很酷,我意识到我现在每次都必须点击保存。我现在遇到的问题是,当我使用 $matches[1] 时,以下内容不起作用 - 只有在我硬编码 author_name 值(例如 jwilson)时它才有效:

function productRewrites() 

    add_rewrite_rule(  
        "writer/([^/]+)/?",  
        "index.php?author_name=$matches[1]",  
        "top");  

当我使用 $matches[1] 时,它只会返回所有内容!那么显然没有在网址中使用 ([^/]+) ?!

【问题讨论】:

你为什么不用codex.wordpress.org/Rewrite_API? 如果您不介意,请参阅编辑 1。 【参考方案1】:

你必须重置永久链接结构

为此,请移至设置 -> 永久链接,然后按保存更改按钮

【讨论】:

简而言之, ([^/]+) 在我的示例中没有转移到 $matches[1] 。如果我硬编码一些东西来代替 $matches[1] 我会得到想要的效果。但我需要它来使用网址最后一部分中的任何内容...... 进一步 - 应该回显“matches =”。 $matches[1] 在 add_rewrite_rule() 函数之后显示了什么?因为它是空白的。

以上是关于我可以编辑我的 .htaccess 来编写一些 WordPress URL(自定义重写)吗?的主要内容,如果未能解决你的问题,请参考以下文章

更改 public_html 目录 .htaccess

如何更改我的网址的特定部分以更改语言编辑.htaccess

需要数学编辑器来编写数学公式

.htaccess 将子文件夹重定向到 HTTPS

如何创建 .htaccess 来显示 SVG?

无法在 .htaccess 中为我的 php 网站编写重写规则