我遇到了一个问题,即某些重定向在URL末尾没有/
则无法正常工作。此外,有时我有冲突的重定向来重写以下重定向。
全球规则
Options -MultiViews
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/$1'.php -f
RewriteRule ^(.+?)/?$ $1.php [L]
ErrorDocument 404 /404.php
没有斜杠就不起作用
RewriteRule ^(.*)launch/$ /$1products/ [R=301,L]
RewriteRule ^(.*)solutions/$ /$1products/ [R=301,L]
例:当我在没有最后一个/
的情况下搜索/launch
时,我最终会进入我的 404 页面。
第二和第三的冲突
RewriteRule ^(.*)products/overview/heartbeat/$ /$1products/heartbeat/ [R=301,L]
RewriteRule ^(.*)heartbeat/$ /$1products/heartbeat/ [R=301,L]
RewriteRule ^(.*)heartbeat-beta/$ /$1products/heartbeat-beta/ [R=301,L]
例:当我搜索/heartbeat-beta/
并期望得到/products/heartbeat-beta/
我的结果是: /products/products/products/products/products/products/products/products/products/products/products/products/products/products/products/products/heartbeat-beta/
您的重写规则顺序不正确,有一些可疑的正则表达式模式。按以下顺序排列:
RewriteRule ^(heartbeat(?:-beta)?)/?$ /products/$1/ [R=301,L,NC]
RewriteRule ^products/overview/(heartbeat)/?$ /products/$1/ [R=301,L,NC]
PS:要使尾部斜杠可选,请在正则表达式模式中使用/?$
。