2016-05-09 7 views
4

wwwとwww以外をhttpsにリダイレクトする必要があります。私はどこでもstackoverflowで見てきましたが、私が探しているものを見つけることができません。htaccessを使用して特定のドメインに対してwwwとnon wwwをhttpsにリダイレクトする方法

のルールは以下のとおりです。それは、ドメインと拡張子example.comと一致している必要があり

  • https://www.example.com

    • example.comとwww.example.comとhttps://example.com をリダイレクトする必要があります。それは、それだけにwwwサブドメインの必見試合も マッチがabc.comまたは123.comまたはexample.netまたは何か他
    • ワイルドカードを使うことはできません。

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

      誰かがwww.example.comそれに入るしかし場合:それは、私が現在持っている もsub.example.comまたはthisisademo.example.com

    に一致するワイルドカードを使うことはできませんhttpsではなくhttpバージョンに移行します。

    おかげ

  • 答えて

    4

    を正確かつ唯一の「example.com」にマッチする正規表現をするRewriteCondと「www.example.com」された私は、私は実際にここに必要だと思うあなたが使用することができますティをテストする前に一つだけのリダイレクトにhttps://www

    #redirect http non-www to https://www 
    RewriteCond %{HTTPS} off 
    RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ 
    RewriteRule (.*) https://www.example.com/$1 [R=301,L] 
    #redirect https non-www to www 
    RewriteCond %{HTTPS} on 
    RewriteCond %{HTTP_HOST} ^example\.com$ 
    RewriteRule (.*) https://www.example.com/$1 [R=301,L] 
    

    クリアブラウザのキャッシュを非WWWやWWWをredierctするルールを、次ののルール。

    +0

    残念ながら、これは "example.com"ではないドメインをリダイレクトし、 "www。"ではないサブドメインもリダイレクトします。 正確にexample.comまたはwww.example.comにリダイレクトする必要があります。 – nhiik

    +0

    @Nhiik:RewriteCondの** example.com **を** yourdomain.com **に置き換え、** www.example.com **を** www.yourdomain.com **に置き換えてルールを更新しました。ルールのターゲット – starkeen

    +0

    ありがとうございますが、まだ具体的ではありません。 httpsにリダイレクトされていますが、スコープはまだ広すぎます。 test.example.comと入力すると、https://www.example.comにリダイレクトされます。これは起こらないはずです。また、CNAME example.netまたはtesturl.comをサーバーに接続しても、https://www.example.comにリダイレクトされます。これは起こらないはずです。 example.comのwwwサブドメインとベースドメインのみが通過する必要があります。 – nhiik

    0
    #First rewrite any request to the wrong domain to use the correct one (i.e. www.) 
    RewriteCond %{HTTP_HOST} !^www\. 
    RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 
    
    #Now, rewrite to HTTPS: 
    RewriteCond %{HTTPS} off 
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 
    
    +0

    残念ながら、これはまだ「example.com」ではないドメインをリダイレクトしても、そのサブドメインをリダイレクトします「www。」ではありません。 正確にexample.comまたはwww.example.comにリダイレクトする必要があります。 – nhiik

    2

    これは、それが私の作品の唯一の方法である - !onの代わりoffとし、%{ENV:HTTPS}の代わり%{HTTPS}で:

    #non-www. http to www. https 
        RewriteCond %{ENV:HTTPS} !on 
        RewriteCond %{HTTP_HOST} ^(www\.)?yourdomain\.com$ 
        RewriteRule (.*) https://www.yourdomain.com/$1 [R=301,L] 
    
        #non-www. https to www. https 
        RewriteCond %{ENV:HTTPS} on 
        RewriteCond %{HTTP_HOST} ^yourdomain\.com$ 
        RewriteRule (.*) https://www.yourdomain.com/$1 [R=301,L] 
    
    関連する問題