OpenshiftアプリケーションのURL:example.rhcloud.com
カスタムドメイン:example.com
私はこれに遭遇しました link とリダイレクトルールを追加しました。しかし、今ではexample.rhcloud.com
にアクセスできません。カスタムドメインはwww.example.com
です。
重複コンテンツの問題を回避するために、このリダイレクトを試みました。
ここに私の.htaccessファイルがあります:
RewriteEngine on
# Uncomment the following lines to force HTTPS
#RewriteCond %{HTTP:X-Forwarded-Proto} !https
#RewriteRule .* https://%{HTTP_Host}%{REQUEST_URI} [R,L]
# WordPress Defaults
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# Redirect Https traffic to Http
RewriteEngine on
RewriteCond %{SERVER_PORT} ^443$ [OR]
RewriteCond %{HTTPS} on
RewriteRule ^(.*)$ http://%{HTTP_Host}%{REQUEST_URI} [R=301,L]
# Redirect non-www to www
RewriteEngine on
RewriteCond %{HTTP_Host} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_Host}/$1 [R=301,L]
# Redirect openshift rhcloud domain to custom domain
RewriteEngine on
RewriteCond %{HTTP_Host} ^example.rhcloud.com$
RewriteRule (.*)$ http://www.example.com/$1 [R=301,L]
example.com
がww.example.com
にリダイレクトしないのはなぜですか?どうすれば修正できますか?
また、httpsへのリダイレクトはhttpsであり、wwwからwwwへのリダイレクトはないため、ブログの読み込みが遅くなっています。ルールの数を減らすにはどうすればいいですか?
編集:
Firefoxの場合:
ページは適切にリダイレクトされません。Firefoxは、サーバーがこのアドレスのリクエストを、決して完了しない方法でリダイレクトしていることを検出しました。この問題は、Cookieの無効化または拒否が原因で発生する場合があります。
RewriteCond %{HTTP_Host} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_Host}/$1 [R=301,L]
まったく異なるドメインから別のドメインにリダイレクトする場合、ターゲットで%{HTTP_Host}
を使用できるとは思わないでしょう。たとえば、上記の結果、example.rhcloud.com
がwww.example.rhcloud.com
にリダイレクトされますが、これは望ましい結果ではありません。次に、実際のドメインへの次のリダイレクトは一致しません。
必要なのは、次のようなものだけですbefore "WordPress"ディレクティブ。 .htaccess内のディレクティブの順序は重要であることに注意してください。
RewriteEngine On
RewriteCond %{HTTP_Host} !=www.example.com [NC]
RewriteRule (.*) http://www.example.com/$1 [R=302,L]
目的のドメインにまだいない場合、これは単に目的のドメインにリダイレクトします。明示的な正規のwwwリダイレクトやHTTPSの確認は必要ありません(新しいドメインにはHTTPSでアクセスできません)。
テストの前にブラウザのキャッシュをクリアします(301リダイレクトがキャッシュされます)。正常に動作していることが確認できたら、上記の302
を301
に変更します。
したがって、要約すると、完全な.htaccessファイルは次のようになります。
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_Host} !=www.example.com [NC]
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
# WordPress Defaults
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]