2013-07-03 29 views
5

HTTPSプロトコルを使用して任意の方向から私たちのサイトにリダイレクトしたいが、一部のリダイレクトが機能しない。私はこれをしたい:HTTP以外のHTTPへのリダイレクトwww htaccess

  • http://www.site.co

https://www.site.co TO https://www.site.co

  • http://site.co TOこれは私のhtaccessである:

    RewriteEngine On 
    RewriteCond %{HTTPS} off 
    RewriteRule ^(.*)$ https://www.domain.com/$1 [L,R=301] 
    
    RewriteCond %{HTTP_HOST} !^www\. 
    RewriteRule ^(.*)$ https://www.domain.com/$1 [L,R=301] 
    

    それは働いていない二番目のルール。私たちのサイト内では別の方向に行き、HTTPSサイトにリダイレクトされません。

  • +0

    [ようこそstackoverflow、** the SO Tour **を読んでください。それはどのようにこのサイトを最高に使うかをあなたに案内します](http:// stackoverflow。com/about) – Prix

    +0

    [http&httpsを維持しながらwww以外をwwwにリダイレクトするための[htaccess]の重複可能性(http://stackoverflow.com/questions/6525348/htaccess-for-redirecting-non-www-to-www- while-preserving-http-https) – Prix

    +0

    コメントは@Prixありがとう。私はその応答を試みるが、私のために働かなかった。私は実際に何が問題なのか分かりません –

    答えて

    29

    はこのようにそれを試してみてください。

    RewriteEngine On 
    
    RewriteCond %{HTTP_HOST} !^www\. [NC] 
    RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301] 
    
    RewriteCond %{HTTPS} off 
    RewriteRule ^(.*)$ https://www.domain.com/$1 [L,R=301] 
    

    ここでの唯一の本当の違いは、まず私たちはWWWに非WWWからリダイレクトし、我々は、HTTPSをチェックし、それをリダイレクトするということです。それは仕事をしている場合

    は、このいずれかを試してみてください

    RewriteEngine On 
    
    RewriteCond %{HTTP_HOST} !^www\. [NC] 
    RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301] 
    
    RewriteCond %{SERVER_PORT} !^443$ 
    RewriteRule ^(.*)$ https://www.domain.com/$1 [L,R=301] 
    
    +0

    を入力してください。@Prix、あなたの答えをありがとうが、残念ながら私のために働いていない。おそらく、仮想ホストの設定に問題があるかもしれません。かもしれない??? –

    +0

    @AnibalMauricioはあなたのhtaccessやPHP上にこれを引き起こす何もないと確信していますか? – Prix

    +0

    まあ、私はそのページがApacheのデフォルトページだと分かりました。問題は仮想ホストの設定でなければなりませんか? –

    0

    あなたがあなたの代わりに次のコードを使用する必要がありますあなたのウェブホストとしてOne.comを使用している場合:

    RewriteEngine On 
    RewriteCond %{HTTP_HOST} !^www\. [NC] 
    RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301] 
    RewriteCond %{HTTPS} !=on 
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 
    
    12

    答えをグランプリで働く動的にするには、静的ドメイン名の代わりにSERVER_NAMEとREQUEST_URIを使用します。

    RewriteEngine On 
    #we replace domain.com/$1 with %{SERVER_NAME}%{REQUEST_URI}. 
    RewriteCond %{HTTP_HOST} !^www\. [NC] 
    RewriteRule ^(.*) https://www.%{SERVER_NAME}%{REQUEST_URI} [L,R=301] 
    
    #here we dont use www as non www was already redirected to www. 
    RewriteCond %{HTTPS} off 
    RewriteRule ^(.*) https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301] 
    
    +0

    URLが' https:// example.com/page' WWWにリダイレクトしません。何か案は? –

    +0

    'http:// example.com/page'は正常にwwwにリダイレクトされます。 –

    0

    あなたはその後、URLがWWWでhttpsにリダイレクトWWWとのリンクを開こうとするとこれはwwwの有無 の両方に使用する

    Example : http://domain.com redirect to https://domain.com 
    

    またはあなたが非でリンクを開くしようとした場合WWWは、URLが非WWWでhttpsにリダイレクト

    Example : http://www.domain.com redirect to https://www.domain.com 
    
    RewriteEngine on 
    
    RewriteCond %{SERVER_PORT} 80 
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
    
    -1
    RewriteEngine On 
    
    RewriteCond %{HTTP_HOST} !^www\. [NC] 
    RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301] 
    
    RewriteCond %{HTTPS} off 
    RewriteRule ^(.*)$ https://www.domain.com/$1 [L,R=301] 
    
    0

    私がコメントするのに十分なポイントを持っていない申し訳ありませんが、 @prixのルールは不必要なリダイレクトを引き起こします。

    RewriteEngine On 
    
    RewriteCond %{HTTP_HOST} !^www\. [NC] 
    RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301] 
    
    RewriteCond %{SERVER_PORT} !^443$ 
    RewriteRule ^(.*)$ https://www.domain.com/$1 [L,R=301] 
    

    あなたはGTMETRIXにhttp://domain.com/を試すことができ、あなたは、それを防ぐ最初のRewriteRuleに移動して、HTTPの末尾に「s」を追加するには、このメッセージ

    "Avoid landing page redirects for the following chain of redirected URLs." 
    
    http://domain.com/ 
    http://www.domain.com/ 
    https://www.domain.com/ 
    

    を取得します。ルールの新しいセットは、次のようになります。たとえばhttps://example.comについては

    RewriteEngine On 
    
    RewriteCond %{HTTP_HOST} !^www\. [NC] 
    RewriteRule ^(.*)$ https://www.domain.com/$1 [L,R=301] 
    
    RewriteCond %{SERVER_PORT} !^443$ 
    RewriteRule ^(.*)$ https://www.domain.com/$1 [L,R=301] 
    
    -1

    https://www.example.com

    RewriteEngine On 
    RewriteCond %{SERVER_PORT} !=443 
    RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC] 
    RewriteRule ^(.*)$ "https\:\/\/www\.example\.com\/$1" [R=301,L] 
    

    注意に行くべきである - あなたはあなた自身のドメインにexample.comを変更する必要があります。

    +4

    これは既存の回答よりも何が追加されているのか分かりませんが、example.comとwww.example.comだけでは使えない理由がありますか? –

    関連する問題