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 に答える