目前,我通过管理员中的永久链接设置为帖子添加了自定义/post/%post_id%
的自定义结构。
由于我需要重写类别,标签和作者页面的永久链接,如下所示:
分类
当前/post/category/category_name
到/category_name
代码
当前/post/tag/tag_name
到tag/tag_name
作者
当前/post/author/author_username
到/author/author_username
我试图在.htaccess中创建自定义RewriteRule,它根本不起作用:
RewriteRule ^/([^/]*)$ ./post/category/$1 [L]
RewriteRule ^/tag/([^/]*)$ ./post/tag/$1 [L]
RewriteRule ^/author/([^/]*)$ ./post/auhtor/$1 [L]
非常感谢.htaccess规则编码以实现此类永久链接的任何帮助。
答案 0 :(得分:4)
这样您就可以实现以下网址格式:
分类
category/category_name
标签
tag/tag_name
作者
/author/author_username
注意:最好在url前加上类别, / category前缀应该添加到路径中而不是直接添加到路径中 访问它,因为wordpress具有访问的页面和帖子 一般没有任何前缀直接。
答案 1 :(得分:1)
我没有使用WordPress测试,而是使用http://htaccess.mwl.be/
你非常接近:
RewriteRule ^([^/]+)$ /post/category/$1 [L]
RewriteRule ^tag/([^/]+)$ /post/tag/$1 [L]
RewriteRule ^author/([^/]+)$ /post/author/$1 [L]
答案 2 :(得分:0)
我没有使用WordPress测试,但使用http://htaccess.mwl.be/
Options -MultiViews
RewriteEngine On
RewriteBase /
RewriteRule ^/([^/]*)$ ./post/category/$1 [L]
RewriteRule ^/tag/([^/]*)$ ./post/tag/$1 [L]
RewriteRule ^/author/([^/]*)$ ./post/auhtor/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
答案 3 :(得分:0)
如果你没有做一个非常高性能的项目,我强烈建议noch搞乱Wordpress标准.htaccess,而是使用Wordpress内部函数来完成相同的任务。尽管项目更清洁,但这也会使您的解决方案与Web服务器无关(谁知道您是否希望在未来切换到NGINX或其他东西)。
Wordpress主要功能应该对你有所帮助add_rewrite_rule。例如,您的类别链接可能如下所示:
// place this rule inside function.php
add_action("init", function() {
add_rewrite_rule('^([^/]+)/?', 'index.php?category_name=$matches[1]', 'top');
});
虽然你应该记住,正则表达式应该有其他“顶级”对象的例外。
来自wordpress docs的一个重要说明: 添加新规则后,您必须刷新规则表:从WordPress管理屏幕,选择设置 - >永久链接,只需点击保存更改,无需任何更改。
还有一个名为Rewrite的插件可用。由于它已经很长时间没有更新,我不会建议在生产中使用它,但它的代码可以作为灵感来源。