【发布时间】: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] 时,它只会返回所有内容!那么显然没有在网址中使用 ([^/]+) ?!
【问题讨论】:
-
如果您不介意,请参阅编辑 1。
标签: wordpress .htaccess url-rewriting slug