我正在尝试将WordPress上的旧永久链接结构设置为301重定向到后名结构,但又不影响主域子目录中托管的任何其他插件域。
Yoast提供了以下代码:
RedirectMatch 301 ^/([0-9]{4})/([0-9]{2})/([0-9]{2})/(?!page/)(.+)$ https://www.example.com/$4
问题是这会影响我托管在根域子目录中的所有插件域。所以我认为我需要将其更改为mod_rewrite,以便可以使用一种条件,使其仅影响主域。像这样:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC]
RewriteRule ^some-address / [L,R=301]
如何将RedirectMatch转换为正确的RewriteRule?
答案 0 :(得分:0)
对于您要重定向的示例网址,我不太确定。但是,也许这段代码可以帮助您找出正确的RewriteRule:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC]
RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/(?!page/)(.+)$ https://www.example.com/$4 [R=302,L]
</IfModule>
或
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC]
RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/(?!page/)(.+)$ https://www.example.com/$4 [R=301,L]
</IfModule>
This tool可以帮助您为RewriteRule做正则表达式:
此图显示了RedirectMatch中的表达式如何工作,并且您可以在此link中可视化其他表达式:
每次在.htaccess
文件中进行更改时,您可能希望清除浏览历史记录,并对其进行测试以查看其是否有效。