我可以编辑我的 .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(自定义重写)吗?的主要内容,如果未能解决你的问题,请参考以下文章