我一直负责修改一个现有的WordPress网站的URL重写。 问题是我从来没有这样做过。 我知道这些规则应该放在一个.htaccess文件里,里面有这样的东西:
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteRule . /index.php [L] </IfModule> # END WordPress
但是,我不知道如何指定重写的规则和条件。 我已经尝试读取mod_rewrite指南 ,但是我有点缺乏的技术能力限制了我的理解。
以下是需要重写的URL和期望的结果:
通用博客posturl
www.example.com/?p=X
= www.example.com/blog/custom-post-title/
具体页面
www.example.com/?page_id=2
= www.example.com/about/
www.example.com/?page_id=4
= www.example.com/bloggers/
www.example.com/?page_id=10
= www.example.com/results/
通用博客configuration文件
www.example.com/?author=X
= www.example.com/blogger/author-name/
任何帮助,将不胜感激。 提前致谢!
你是反向思考:你重写inputURL以匹配你的文件系统。
因此,您要将www.example.com/blog/custom-post-title/重写为www.example.com/?p=X
对于你所有的页面,从具体到通用。
#Specifics RewriteRule ^results/$ /?page_id=10 [L] RewriteRule ^bloggers/$ /?page_id=4 [L] RewriteRule ^about/$ /?page_id=2 [L] #Blogger names RewriteRule ^bloggers/(.+)$ /?author=$1 [L] #is there really no s to blogger here?? #Other articles RewriteRule ^(.+)$ /?$1 [L]
我有一点怀疑最后的规则,因为你不使用文件名redirect(重写/ /)它可能会提出一个新的请求index.php?<thequerystring>所以我们将不得不从index.php从最后重写以避免无限循环:
RewriteRule ^index.php$ - [L]
可以添加在所有其他人面前。
WordPress的应该能够在设置的永久链接部分为你做这个。
否则,如果它不能直接写入你的.htaccess文件,它应该给你一些东西来复制和粘贴。
我能看到的唯一问题是使用“博客”而不是作者。 如果你认为它足够重要,那么你可能需要纠正。
更多信息