私は自分のサイトのSSL証明書を購入したばかりで、HTTPSを強制しようとしています。それはちょっとうまくいくが実際にはない。私はカスタムルーティングのためにPHP Slimフレームワークを使用しているApacheにいます。Apacheで奇妙な結果が出るように強制する
マイフォルダ構造体
root/
.htaccess (A)
php/
public_html/
.htaccess (B)
.htaccessの私のメインのhtaccessファイルは、私がexample.com
に行くとき
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
はそれが安全なページに行くこれらのルールを持っている
(A) 。すばらしいです!私はhttp://www.example.com/loginに行けば、
の代わりにリダイレクト:
の.htaccess(B)
マイpublic_htmlのファイルは、これらのルール
<IfModule mod_rewrite.c>
RewriteEngine on
#RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [QSA,L]
</IfModule>
# Always use https for secure connections
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
問題を持っていますhttps://www.example.com/login,
は、それが上から下までの検証を取得htaccessファイル - ファイルにhttps://www.example.com/index.php
これは、あなたのhtaccessに複数のルールセットがあるためです。 ''の最初のルールは、要求されたファイルが存在するかどうかをチェックし、存在しない場合は 'index.php'にリダイレクトします。 '/ login'はおそらく実際のファイルとして存在しないので、そのルールがトリガされます。他のルールよりも前にhttps-check _を移動するだけです。 –
ありがとう!非常に簡単 – jozenbasin
答えとして追加しましたので、それを受け入れて質問を閉じることができます。 –