Заставить 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, как все мы;)
Это часть .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]
Это должно делать свое дело.