考虑以下规则
RewriteRule ^index\.html$ index.php [L]
RewriteRule ^index\.php$ index.html [R=301]
我想.html
使用该.php
文件,但我希望 url.html
始终具有扩展名。
上面的规则创建了一个重定向循环。这样做的正确方法是什么?
考虑以下规则
RewriteRule ^index\.html$ index.php [L]
RewriteRule ^index\.php$ index.html [R=301]
我想.html
使用该.php
文件,但我希望 url.html
始终具有扩展名。
上面的规则创建了一个重定向循环。这样做的正确方法是什么?
您可以检查实际请求,也可以完全防止循环。
选项 1,检查请求:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php
RewriteRule ^index\.php$ index.html [R=301]
这使得如果实际请求不是index.php
,重定向将不会发生。
选项 2,防止重写引擎完全循环。将此添加到 htaccess 文件的顶部:
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^ - [L]
这样做的缺点是您可能有真正想要循环的规则。