2012-05-04 3 views
2

私の.htaccessに次のようなエラーがあります - クリーンURLの宣言とhttpsリダイレクトはどちらもうまく動作しますが、一緒に置くとリダイレクトエラーが発生します決して完了しない方法)。ここでYIIを使用して.htaccessでURLをクリアし、httpsリダイレクトの競合が発生しました。

は私.htacessです:

RewriteEngine on 
# if a directory or a file exists, use it directly 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
# otherwise forward it to index.php 
RewriteRule . index.php 
# force to use https 
#RewriteCond %{HTTPS} !=on 
#RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

私はこの問題を解決することができますどのように任意のアイデア?

+2

Https/index.phpのルールを反転すると、Httpsが最初に実行されますか? – acorncom

答えて

2

は、私はあなたと同じ問題を通じてつまずいたし、ちょうど一日前に紛争を考え出したとして、私は遅くないです願ってありがとうございます。

あなた.htaccessファイルに次のように書く:最初のルールが自動的にHTTPSに任意のHTTPリクエストをリダイレクトし、(重要な[L]タグを通じて)意志台無しページ(具体的には、他の置換を停止します

RewriteEngine On 

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

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

画像やCSSスタイルシートは表示されません)。

2番目は、特定のURLが実際のファイルまたはディレクトリに対応するかどうかを確認し、そうでない場合は、index.php(Webアプリケーションのブートストラップファイル)に要求を転送する方法です。 (アプリケーションの設定ファイル内のルールが残りの処理を行う必要があります)。

+0

default-ssl.confファイルをダブルチェックして、AllowOverrideがAllに設定されていることを確認します。何らかの理由でAllowOverrideが設定されていなくてもうまくいきましたが(ファイル内でさえも)、2つのルールが多すぎました。 – coop