自定义 Wordpress 网站上的 URL 重写

自定义 Wordpress 网站上的 URL 重写

我的任务是修改现有的 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 和期望的结果:

通用博客文章 URL
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/

通用博主简介
www.example.com/?author=X
= www.example.com/blogger/author-name/

任何帮助都将不胜感激。提前致谢!

答案1

你是逆向思维:你重写输入的 URL 来匹配你的文件系统。

所以你想重写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]

我对最后一条规则有一点怀疑,因为您没有使用文件名进行重定向(在 / 上重写),它可能会发出新的请求,因此index.php?<thequerystring>我们必须从最后一次重写中排除 index.php 以避免无限循环:

RewriteRule ^index.php$ - [L]

可以添加在所有其他内容的前面。

答案2

Wordpress 应该能够在设置的永久链接部分为您执行此操作。

否则,如果它不能直接写入您的 .htaccess 文件,它应该给您一些可以复制和粘贴的内容。

我发现的唯一问题是使用“博主”而不是作者。如果你认为这很重要,你可能需要更正。

更多信息

相关内容