如何设置二级永久链接结构?

时间:2014-10-01 作者:Ben Dyer

所以我在一个需要多个permalink结构的站点上遇到了一个情况。现在,我已经知道你要说什么了,因为我看过的每一个Google和SX结果都说了同样的话:Don\'t do this; this is a bad idea; here be dragons; etc. 这些我都听说过了。我已经整理好了链接规范化,og:url和SEO不是问题。

然而,实际情况是,客户机希望在“子目录”中更改现有站点,该子目录具有相同的页面结构,但在模板文件中有一些PHP逻辑。因此,它是相同的内容,但根据将通过此不同URL访问的用户子集的业务规则,页面看起来有点不同。

因此,有了这样的理解,在Wordpress中定义以下内容的最佳方式是什么:

http://www.example.com/abc/ 应重写为http://www.example.com/

http://www.example.com/abc/about/ 应重写为http://www.example.com/about/

等等

我目前有使用手动定义的规则add_rewrite_rule():

add_rewrite_rule(\'abc/?$\',\'index.php?page_id=6\',\'top\');
add_rewrite_rule(\'abc/about/?$\',\'index.php?page_id=9\',\'top\');
但这是无法维持的。我想让它像这样add_rewrite_rule() 调用,但应用于整个站点,理想情况下无需从数据库中逐个查找每个URL。

仅重写,不接受重定向。

有什么想法?

2 个回复
最合适的回答,由SO网友:Ben Dyer 整理而成

我想我找到了一个解决方案,使用了一个不常用的函数:add_permastruct().

这就是我上面描述的技巧:

add_rewrite_tag(\'%page%\',\'([^/]+)\', \'pagename=\');
add_permastruct(\'abc\',\'/abc/%page%/\',false);

add_rewrite_rule(\'abc/?$\',\'index.php?page_id=6\',\'top\');
Theadd_rewrite_tag() 定义我希望Wordpress查找的pagename值。然后add_permastruct() 使用该值定义自定义结构。

最后一条规则是手动处理主页。

我相信这只适用于一个层次结构级别,但稍后我可能会回来调整regex以改进它。就目前而言,这符合我的目的。

SO网友:Mark Kaplun

您需要的是两个具有内容复制的站点,可能是在多站点安装下。虽然您仍然需要编写一些重复代码,但它的开发和调试要容易得多,而且dragons的数量很少。

结束

相关推荐

Custom permalinks structure

我希望有这样的结构:www.mysite.com/2013 (必须显示2013年的所有职位)www.mysite.com/my-category/2013 (必须显示2013年和“我的类别”类别的所有帖子)www.mysite.com/my-category/my-tag/ (必须显示所有类别为“我的类别”和标记为“我的标记”的帖子)www.mysite.com/my-category/ (必须显示“我的类别”类别的所有帖子)www.mysite.com/my-