0

別のサイトからコピーした htaccess リダイレクトに次のコードがあり、まったく問題なく動作しています。誰でもこれに問題がありますか?

    <IfModule mod_rewrite.c>

    Options +FollowSymlinks -MultiViews
    RewriteEngine on

    RewriteCond %{HTTP_HOST} ^site-url.com$
    RewriteRule ^(.*)$ http://www.site-url.com/$1 [R=301]

    RewriteCond %{HTTPS} !=on
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

    </IfModule> 

したがって、基本的にはhttp://site-url.comからhttp://www.site-url.comにリダイレクトし、https でない場合は https にリダイレクトします。

サーバーのプロバイダーは、十分に公平なコードをサポートしていないと言っていますが、サイトが無限ループに陥っても、私はすべてを試しました。サーバーが認識していないようです

    RewriteCond %{HTTPS} !=on

しかし、私もこれを試しました

    RewriteCond %{SERVER_PORT} !^443$

そして、同じ問題を取得します。

誰か提案がありますか、これはサーバーの構成の問題でしょうか? もしそうなら、誰かがそれが何であるかを示すことができますか?

ありがとう

ジェイソン

4

2 に答える 2

0

あなたは試すことができます:

RewriteEngine on

RewriteCond %{HTTP_HOST} !^www\. [NC,OR]
RewriteCond %{HTTPS} != on [NC]
RewriteRule ^(.*)$ https://www.site-url.com$1 [L,R=301]
于 2013-07-23T21:01:35.210 に答える
0

あなたの問題は2つあります。

まず、最初のルールは へのリダイレクトhttp://です。次に、最初のルールに がありませんLhttp://site-url.com/somethingこれらが一緒になって、 をリクエストすると、最初のルールが適用され、リクエストが へのリダイレクトとしてマークされる状況が作成されhttp://www.site-url.com/somethingます。ただし、Lフラグがないと、2 番目のルールがすぐに処理されて適用され (HTTPS ではないため)、最初のルールのリダイレクト ターゲットに取って代わり、 にリダイレクトされますhttps://site-url.com/something

そのため、ブラウザが要求するhttps://site-url.com/somethingとすぐに、最初のルールが適用されて にリダイレクトされますhttp://www.site-url.com/something。次に、Lフラグがないため 2 番目のルールが適用されます。などなど、無限ループが発生します。

L解決策として、ルールにandを追加httpsします。

RewriteCond %{HTTP_HOST} ^site-url.com$
RewriteRule ^(.*)$ https://www.site-url.com/$1 [L,R=301]

RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 
于 2013-07-23T21:10:39.500 に答える