1

考虑以下规则

RewriteRule ^index\.html$ index.php [L]
RewriteRule ^index\.php$ index.html [R=301]

我想.html使用该.php文件,但我希望 url.html始终具有扩展名。

上面的规则创建了一个重定向循环。这样做的正确方法是什么?

4

1 回答 1

1

您可以检查实际请求,也可以完全防止循环。

  1. 选项 1,检查请求:

    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php
    RewriteRule ^index\.php$ index.html [R=301]
    

    这使得如果实际请求不是index.php,重定向将不会发生。

  2. 选项 2,防止重写引擎完全循环。将此添加到 htaccess 文件的顶部:

    RewriteCond %{ENV:REDIRECT_STATUS} 200
    RewriteRule ^ - [L]
    

    这样做的缺点是您可能有真正想要循环的规则。

于 2012-08-30T22:40:15.677 回答