2016-09-04 16 views
1

何百万回もの質問がありますが、ここでの回答の多くを読んだ後も、これはまだ分かりません。 (.htaccessファイルは、サブドメインフォルダに配置する場合)>https://sub.domain.tldリダイレクトwww。 www以外でhttpをhttpsにリダイレクトする。

  1. http://domain.tld>https://domain.tld
  2. http://www.domain.tld>https://domain.tld
  3. https://www.domain.tld>https://domain.tld
  4. http://sub.domain.tld:私は以下のようにすべての要求をリダイレクトする必要があります

    これまでは、htmlのコードを使用していましたページがロードされ、タイムアウト後に示し、それらはまた、HTTPSへのHTTPのためのコードを持っているリダイレクトが、(WWWリダイレクト以上)コードのこの部分を追加した後、非WWW

    <IfModule mod_rewrite.c> 
        RewriteCond %{HTTPS} !=on 
        RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] 
        RewriteRule ^(.*)$ http://%1/ [R=301,L] 
    </IfModule> 
    

    にWWWを解決5boilerplate、エラー/あまりにも多くのリダイレクト

    <IfModule mod_rewrite.c> 
        RewriteEngine On 
        RewriteCond %{HTTPS} !=on 
        RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] 
    </IfModule> 
    

    は、私はまた、this SO answerのような例を試してみたが、まだウェブサイトが動作しません。 httpsにリダイレクトするように

    <IfModule mod_rewrite.c> 
        RewriteEngine on 
        RewriteBase/
    
        RewriteCond %{REQUEST_FILENAME} !-d 
        RewriteRule ^(.*)\/$ /$1 [R=301,L] 
    
        RewriteCond %{REQUEST_FILENAME} !-f 
        RewriteCond %{REQUEST_FILENAME} !-d 
        RewriteRule /?([A-Za-z0-9_-]+)/?$ index.php?id=$1 [QSA,L] 
    
        #RewriteCond %{HTTPS} off [OR] #by uncommenting this, site stops working 
        RewriteCond %{HTTP_HOST} ^www 
        RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ 
        RewriteRule^https://%1%{REQUEST_URI} [R,L] 
    </IfModule> 
    

答えて

1

場合によっては、一部のサーバー構成によっては、という変数が常に設定されているようです。それはループを説明するだろう、私はすでにここで同様のケースを見てきました。

簡単な回避策は、SERVER_PORT(デフォルト80と443を使用する場合)をテストするか、またはHTTP:X-Forwarded-Protoをテストすることもできます。

例(1)それがないhttpsであるかどうかをテストする:それはないhttpsある場合

RewriteCond %{HTTP:X-Forwarded-Proto} !https 

例(2)テストする:

RewriteCond %{SERVER_PORT} !403 
+0

例1はすべてのホスティングで完全に動作し、例2は他のものと同じように動作しますが、あまりにも多くのリダイレクト – moped

+0

、1つのホスティングでは、例2が動作し、例1ではそうではありません。すべての可能な解決策を得ることは良いことです! – moped

1

と:今のソリューションのコードの最初の部分を使用し、httpshttpを置き換えることですが、それが最も重要なリダイレクトを解決していない(1)

現在フル.htaccessコンテンツのみ単一のhttpリクエストでwww以外のものを使用することができます。

RewriteEngine on 
RewriteCond %{HTTPS} off [OR] 
RewriteCond %{HTTP_HOST} ^www 
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ 
RewriteRule^https://%1%{REQUEST_URI} [NE,L,R] 

このルールをテストする前に、ブラウザのキャッシュをクリアしてください。

+0

はまだそれを試みたが、クリーンキャッシュとハードリロード後、Chromeで「ERR_TOO_MANY_REDIRECTS」と表示されます。私はhttps://domain.tldを正しく取得しますが、その後、ロードしてエラーをスローします – moped

+0

クラウドフレアを使用していますか? – starkeen

+0

いいえ、私はCFや他のCDNを使用していません。私はちょうどhttps:ページに移動するか、www.domainを使用するとうまくいきます) – moped

関連する問題