Apache が www.? を自動的に削除するようにします。
質問
Cookie や SEO などのさまざまな理由から、物事をシンプルにするために、Apache がすべてのリクエストを自動的にリダイレクトするようにしたいと考えています。 http://www.foobar.com/何でも に http://foobar.com/何でも. 。私が思いつく最善の方法は、mod_rewrite ベースの怪物ですが、「ドメイン ABC に対するすべてのリクエストを XYZ にリダイレクトする」ように指示する簡単な方法はありますか?
追伸:見つけました この多少関連した質問, しかし、これは IIS 用であり、私が望んでいることとは逆のことを行います。また、まだ複雑です。
解決
それは次のように簡単です。
<VirtualHost 10.0.0.1:80>
ServerName www.example.com
Redirect permanent / http://example.com/
</VirtualHost>
必要に応じてホスト名とIPを調整します:)
他のヒント
サイトからサイトへのコピーがより簡単かつ簡単になります。
RewriteCond %{HTTP_HOST} ^www\.(.+)$
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
私たち皆がそうしているように、mod_rewrite を使用する場合は非常に簡単です ;)
これは、私のライブ Web サイトの .htaccess の一部です。
RewriteEngine on
# Catches www.infinite-labs.net and redirects to the
# same page on infinite-labs.net to normalize things.
RewriteCond %{HTTP_HOST} ^www\.infinite-labs\.net$
RewriteRule ^(.*)$ http://infinite-labs.net/$1 [R=301,L]
.htaccess ファイルをいくつかの mod_rewrite ルールとともに使用します。
RewriteEngine On
RewriteRule ^www.SERVERNAME(.*) http://SERVERNAME$1 [L,QSA]
構文が正しいかどうかわかりませんが、 $1
そこにありますが、それは十分に文書化されています。L は位置情報を送信します。ヘッダーをブラウザに送信します。QSA はクエリ文字列の追加を意味します。
mod_rewrite の使用について言及したので、.htaccess に単純なルールを提案します - 私には怪物のように思えません:)
RewriteCond %{HTTP_HOST} ^www\.foobar\.com$ [NC]
RewriteRule ^(.*)$ http://foobar.com/$1 [L,R=301]
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.domain.com$ [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L]
それでうまくいくはずです。
所属していません StackOverflow