web-dev-qa-db-ja.com

複数のリダイレクトなしでhttp wwwおよび非SSLドメインをHTTPSにリダイレクトしますか?

複数のリダイレクトでリンクジュースを失っています。

すべてのドメインバージョンをデフォルトドメインにリダイレクトする必要があります。

https://example.com

すべてのドメインバージョンとは、http://wwwhttp://https://www、およびhttps://を意味します。 (index.phpすべての場合。)

現在、以下のコードを使用しています。すべてのドメインはhttps://にリダイレクトしていますが、直接ではありません。 http://wwwと入力すると、図のように3回リダイレクトされます。 index.phpをリダイレクトする必要があります。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_Host} ^www.example.com [NC]
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_Host}%{REQUEST_URI} [L,R=301]
</IfModule>

Google Chromeブラウザの「リダイレクトパス」拡張機能を使用して、リダイレクトを監視しています。

リダイレクトを3回表示できます。

You can see redirect 3 times

リダイレクトは2回表示されます。

You can see redirect 2 times

1
muhammad usman

書き換えを行う代わりに、より多くのVirtualHostsとリダイレクトを使用してみてください。

<VirtualHost *:80>

  ServerName example.com
  ServerAlias www.example.com
  Redirect permanent / https://www.example.com/

</VirtualHost>

<VirtualHost *:443>

  ServerName www.example.com
  Redirect permanent / https://example.com/
  ...
  (put your HTTPS config & path to certs here for the redirect to work)

</VirtualHost>

<VirtualHost *:443>

  ServerName example.com
  ...
  (This is your destination VirtualHost)

</VirtualHost>
2
Tom Brossman