1

HTTPS のみの /login ページにリダイレクトしたい。残りのページは HTTP である必要があります。

.htaccess ファイルは次のようになります。

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]

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

RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !/login
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php

なぜうまくいかないのかわかりません。/login にアクセスすると、example.com/index.php にリダイレクトされました。何が問題なのですか?

4

2 に答える 2

0

ディレクトリに実際の (物理的な)/loginフォルダーまたはファイルはありますか? そうではないので、/loginリクエストは最終的に最後の書き換えルールによってキャプチャされ、index.php にリダイレクトされます。

これをこの行の上に追加してみてくださいRewriteCond %{REQUEST_URI} !/login: RewriteCond %{REQUEST_FILENAME} !-f(または、ログイン要求を別の方法で処理するだけです) 。

于 2013-11-13T11:49:57.980 に答える