2017-10-16 12 views
1

myredirectsを希望どおりに動作させることができません。私の目標は以下のとおりです。http://www.example.com wwwとhttpsリダイレクトが希望どおりに動作しない

https://www.example.comの目標1はaleady達成されているが、問題はhttps://www.example.comへのリダイレクトhttp://www.example.comであり、そのは実際に404に結果

  1. リダイレクトhttp://example.comリダイレクト
  2. https://www.example.comにエラー。

    方法1.

    <If "%{HTTP_HOST} != 'www.enmowe.com'"> 
         Redirect "/" "https://www.%{HTTP_HOST}/$1" 
        </If> 
    
        <If "%{SERVER_PROTOCOL} != 'HTTPS'"> 
         Redirect "/" "https://www.%{HTTP_HOST}/$1" 
        </If> 
    

    方法2:私は私のApacheのVirtualHostで、次の試してみました

    https://enmowe.com/ (403) is not reachable 
    http://enmowe.com/ (301) is forwarding to https://www.enmowe.com/ (200) 
    https://www.enmowe.com/ (200) is available 
    http://www.enmowe.com/ (404) is not reachable 
    

    :私は以下の通りである問題を識別するためにRyteを使用しました

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

    方法3

    RewriteEngine on 
    RewriteCond %{SERVER_NAME} =enmowe.com 
    RewriteRule^https://www.%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] 
    

    ちょっとあなたは、プロトコル、ホスト名右でない場合はリダイレクトしたい今

+0

Apacheは、www.enmowe.comの仮想ホストエントリを持っていますか?そうでなければ、書き換えルールは起動できません。 –

+0

www.enmowe.comは仮想ホストのServerAliasとして設定されています –

答えて

2

を失った感じ。ですから、この二つの条件を策定する必要があります

RewriteEngine On 

RewriteCond %{HTTPS} !=on 
RewriteRule (.*) https://www.enmowe.com/$1 [R=301,L,NC] 

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

https://enmowe.comがすべてでは到達できないという事実は、これに結び付けられていません。到達可能にしたい場合は、ホスト名をServerAliasとしてhttpsサーバの定義に追加します。

ご意見:virtual-hostsタグはご質問に関連していないので削除してください。

+0

ありがとうございます、これは部分的にしか機能しません。 http:// enmowe ...またはhttp://www.enmowe ...の場合、URLをhttps:// wwwに設定します。ただし、https:// enmowe ...はまだhttps:/にリダイレクトされません。 /www.enmowe ... –

+0

これはあなたの質問からコピーされた正規表現のためかもしれません。私はテストしなかった。 [書き換えデバッグ](https://stackoverflow.com/questions/9632852/how-to-debug-apache-mod-rewrite)を有効にして、2番目の条件が一致するかどうかを確認します。 – blafasel

+0

これは私がenmowe.com.comのバーチャルホストファイル内に持っているものです:!。。 するRewriteCondの%{HTTPS} =の[OR] するRewriteCondの%{HTTP_HOST} ^(WWW \ enmoweの\上 'RewriteEngine。 ) RewriteRule ^(。*)https://www.% {SERVER_NAME}%{REQUEST_URI} [END、NE、R = permanent]しかし、 'https:// enmowe.com'はまだリダイレクトされていないようです。 私も追加: 'のRewriteCond%{HTTPSを} するRewriteCondの%{HTTP_HOST} ^(WWW \ enmowe \ .COM。。)$ のRewriteRule ^上のhttps!?(*。):// WWW。%{SERVER_NAME}%{REQUEST_URI} [END、NE、R = permanent] ' 本当に奇妙です。私は 'www.enmowe.com'のために仮想ホストを作成しました。 –

関連する問題