1

私は次の mod 書き換えルールを持っています。最初は URI リクエストから「index.php」セグメントを削除し、2 つ目は HTTPS 接続を強制します。ただし、2 つ目は「index.php」を再挿入することです。

# send request via index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

# force SSL
RewriteCond %{HTTP_HOST}  \.
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

例えば ​​-

http://www.mysite.tld/somepage

になる

https://www.mysite.tld/index.php?/somepage

私はまだ htaccess ファイルの書き方を理解しようとしていますが、この問題を回避するためにこれら 2 つを組み合わせる方法はありますか?

4

1 に答える 1

2

ルールの順序を入れ替える必要があります。

# force SSL
RewriteCond %{HTTP_HOST}  \.
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# send request via index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

リダイレクト ルールが最後に適用されたとき、最初のルールが適用され、その繰り返しの書き換えが停止し、書き換えエンジンがループし、2 番目のルールが適用され、URI (現在は が含まれているindex.php) がリダイレクトされるため、まだ適用されていました。

于 2013-09-17T20:08:16.707 に答える