Как всегда удалить WWW из URL с помощью mod_rewrite? - PullRequest
15 голосов
/ 02 марта 2010

Я использую следующее, чтобы попытаться удалить WWW из URL:

RewriteCond %{HTTP_HOST} ^example.com$ [NC]
RewriteRule (.*) http://example.com$1 [R=301]

Но по какой-то причине это не работает.Есть предложения?

Ответы [ 5 ]

43 голосов
/ 02 марта 2010

Вот более обобщенное решение:

RewriteCond %{HTTP_HOST} ^www\.(.+) [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [L,R=301]
24 голосов
/ 02 марта 2010

Попробуйте:

RewriteCond %{HTTP_HOST} ^www\.example\.com$
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]

и без mod_rewrite:

<VirtualHost 10.0.0.1:80>
        ServerName www.example.com
        Redirect permanent / http://example.com/
</VirtualHost>

Виртуальные хосты можно использовать, выполнив действия, указанные в следующем URL: Настройка виртуального хоста в Apache .

9 голосов
/ 18 сентября 2012

В качестве незначительного изменения ответа Кайла, я бы поставил / в условии соответствия RewriteRule, например

RewriteCond %{HTTP_HOST} ^www\.example\.com$
RewriteRule ^/(.*)$ http://example.com/$1 [R=301,L]

В противном случае в результате вы получите двойную косую черту.

http://www.example.com/smth -> http://example.com//smth
5 голосов
/ 17 декабря 2012

Сначала я всегда использовал бы 307 (временное перенаправление), потому что если вы ошиблись, некоторые браузеры кешировали его постоянно.В итоге я установил Google Chrome только потому, что не смог заставить свой Firefox забыть о плохом перенаправлении, даже когда я удалил весь кеш.

3 голосов
/ 20 ноября 2014

Вот решение, если вам не нужно жестко закодированное доменное имя. Не забудьте запустить механизм перезаписи, иначе это не сработает!

 # Start rewrite engine
 <IfModule mod_rewrite.c>
   Options +FollowSymlinks
   RewriteEngine On
 </IfModule>

 # Rewrite "www.example.com -> example.com"
 <IfModule mod_rewrite.c>
   RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
   RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
 </IfModule>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...