Apacheを使用してEC2でWebアプリケーションを実行しています。 wwwをwww以外にリダイレクトしたい。 Googleの検索でこれを使用しましたが、リダイレクトループにつながります。
<VirtualHost *:80>
ServerName www.domain.com
Redirect 301 / http://domain.com/
</VirtualHost>
サーバーは1つのドメインのみを処理するため、仮想ホストは使用していません。上記の例で何が間違っている可能性があり、301リダイレクトを行うにはどうすればよいですか?
追伸.htaccessの使用を避けようとしています。
混乱を疑わなければならないので、wwwからno-wwwへのリダイレクトを行う方法について説明します。
1. 2つのドメインに対して2つのVirtualHostを作成し、301リダイレクトを使用します。
NameVirtualHost *:80
<VirtualHost *:80>
ServerName example.com
DocumentRoot "/path/to/site"
</VirtualHost>
<VirtualHost *:80>
ServerName www.example.com
Redirect 301 / http://example.com/
</VirtualHost>
2. 2つのドメインに対して2つのVirtualHostを作成し、リダイレクトルールで.htaccessを使用します。
<VirtualHost *:80>
ServerName example.com
DocumentRoot "/path/to/site1"
</VirtualHost>
<VirtualHost *:80>
ServerName www.example.com
DocumentRoot "/path/to/site2"
</VirtualHost>
で/path/to/site2/.htaccessを作成します
Redirect 301 / http://example.com/
3. 1つのVirtualHostを作成し、共通の.htaccessにリダイレクトを設定します。
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot "/path/to/site"
</VirtualHost>
/path/to/site/.htaccessを作成します
RewriteEngine On
RewriteCond %{HTTP_Host} ^www.example.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]