2017-10-02 5 views
1

私はここにウェブサイトとそのワードプレスのブログに少し問題があります。httpsをhttpに保存している間に

私たちはいくつかの問題に直面し、HTTPに戻らなければならないまで、短期間でhttpsですべてをセットアップしました。

当時、私はこの種の問題に対処するため.htaccessファイルの小さなコレクションを持っていたが、私は実際に私の試したことがない「WWWに非WWWを - SSL」

意図は、WWWを追加にしたとHTTPSは、httpにリダイレクト

RewriteCond %{HTTPS} on 
RewriteRule ^/?$ http://%{SERVER_NAME}/ [R=301,L] 

RewriteCond %{HTTP_HOST} !^www\. 
RewriteCond %{HTTPS}s ^on(s)| 
RewriteRule^http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

は、私にはかなり簡単ようで、私はそれが動作するはずと思いました。

http://www.example.com/のファイルとhttp://www.example.com/blogのファイルの2つのファイルがあります。ユーザーは主にSE経由でブログからアクセスしています。

問題がある:私はhttp://www.example.com/代わりのhttp://www.example.com/blogにリダイレクトhttps://www.example.com/blogをロードした場合。

私は私がこの

RewriteCond %{HTTPS} on 
RewriteRule ^/?$ http://%{SERVER_NAME}/{REQUEST_URI} [R=301,L] 

RewriteCond %{HTTP_HOST} !^www\. 
RewriteCond %{HTTPS}s ^on(s)| 
RewriteRule^http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

を追加するためのアイデアを持っていたが、その後、私は唯一のhttp://www.example.com/{REQUEST_URI}

にリダイレクトこの質問は、誰かが私を保つことができる方法を教えてもらえてみてくださいと思った質問を書いている間そのリダイレクトクエリのパス?

答えて

0
RewriteCond %{HTTPS} on 
RewriteRule ^/?$ http://%{SERVER_NAME}/{REQUEST_URI} [R=301,L] 

あなたは他のディレクティブであなたは%{REQUEST_URI}を持っていることに気付いた場合。上記の%という接頭辞がありません。これは、サーバ変数REQUEST_URIの値を取得するために必要な構文です。しかし、REQUEST_URIの値にはすでにスラッシュ接頭辞が含まれているので、代入からスラッシュを省略する必要があります。すなわち、 /{REQUEST_URI}の代わりに%{REQUEST_URI}にする必要があります。

も(この.htaccessファイルはそのサブディレクトリにある場合、または/blogサブディレクトリ)RewriteRuleパターン^/?$)は、あなたのサイトのルートと一致していることに注意してください。 すべてと一致する必要があります。したがって、このような上記RewriteRuleを変更します。

RewriteRule^http://www.example.com%{REQUEST_URI} [R=301,L] 

私もドメインをハードコードしました、非標準的な(すなわち、非WWW。)ホストを要求する場合それ以外の場合は、あなたは二重のリダイレクトになってしまいます。

+0

非常にありがとうございます。できるだけ早く試してみましょう! – Caylean

+0

私は '.htaccess'ファイルを何回か変更しました。最初に私は下の部分を修正しました、二番目に私は上の部分を元に戻して編集しました。それを何度か試してみました。最後に、 '.htaccess'ファイルのhttpsからhttpへの部分だけが必要であることに気がつきました。私は再び検索し、実際にこれらの行が見つかったことを確認しました。' RewriteEngine On RewriteCond%{HTTPS} RewriteRule(。*)http://%{HTTP_HOST}%{REQUEST_URI} [R = 301、L] '...ファイル内の通常のWordpress行以外に必要なものはありません。 – Caylean

+0

おそらくあなたはどこかwww/non-wwwをcanonicalisingしていますか? '.htaccess'でそれをしないと、httpsからhttpへのリダイレクトを行うときに、非正規のホスト名を要求するときに二重リダイレクトになります。また、_substitution_でURLパスが使用されていない場合は、URLパス(つまり。(。*))を取得する必要はありません。すべてのリクエストを照合するためには、単に '。*'または ''^'のみでなければなりません。 – MrWhite

関連する問題