web-dev-qa-db-ja.com

https://example.comを直接https://www.example.comにリダイレクトします

Apache2仮想ホストファイルを使用して、すべてのhttp://リクエストをhttps://にリダイレクトしています。

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    Redirect / https://www.example.com/
</VirtualHost>

<VirtualHost *:443>
    ServerName www.example.com
    #more details here
</VirtualHost>

これは正常に機能し、すべてのリクエストをhttps://にリダイレクトしますが、non-wwwリクエストをwwwにリダイレクトしたいと思います。上記の<VirtualHost *:443>の前後にこれらの行を追加しようとしましたが、成功しませんでした。

<VirtualHost *:443>
    ServerName example.com
    Redirect / https://www.example.com/
</VirtualHost>

仮想ホストファイルでSSLを強制しながら、www以外からwwwにリダイレクトさせるにはどうすればよいですか?

3
Riyas Kp

次のようなものを試してください:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot "/path/to/port/80/site"
</VirtualHost>

<VirtualHost *:443>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot "/path/to/port/443/site"
</VirtualHost>

/ path/to/port/8/siteに.htaccessファイルを作成します:

RewriteEngine On
RewriteCond %{HTTP_Host} ^example.com$ [NC,OR]
RewriteCond %{HTTP_Host} ^www.example.com$ [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

/ path/to/port/44/siteに.htaccessファイルを作成します:

RewriteEngine On
RewriteCond %{HTTP_Host} ^example.com$ [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
1
closetnoc