3

ねえ、私は codeigniter を使用しており、正常index.phpに動作する URL から を削除するための書き換えルールを追加しました。

ただし、すべての http リクエストを https にリダイレクトするルールを追加しましたが、そうすると index.php でリダイレクトされます。

この URL を入力した場合の意味:domain.com/somecoolcontroler

それは私をリダイレクトします:https://domain.com/index.php/somecoolcontroler

しかし、後でナビゲートすると、それなしで通常のURLに戻るので、問題はリダイレクトルールにあると思います。これは私が htaccess に入れたものです:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L] 
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

どうすれば修正できますか?

4

1 に答える 1

5

ルーティングルールの前にリダイレクトルールを配置する必要があります。書き換えエンジンはループするため、フラグがある場合でもL、2回目にルーティングルールをループしてリダイレクトルールに到達します。ただし、今回はURIがすでに書き換えられています。

書き換えルールが最初の場合、ルーティングルールが適用される前にブラウザをリダイレクトします。次に、リダイレクトされた要求が行われると、ルーティングルールが適用されます。L旗も必要です。

RewriteEngine On

RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L] 
于 2012-12-25T08:43:49.373 に答える