необходимо удалить www из поддоменов 2-го уровня в Apache (используя перезапись) - PullRequest
2 голосов
/ 18 июня 2010

У меня есть проблема, но со многими поддоменами: например,

sub1.domain.com и new.domain.com и xsub.domain.com и многие другие, как этот.

Как мне удалить www перед любым из них с помощью одного общего правила.

Например, если кто-то наберет www..domain.com или http://www..domain.com, чтобы изменить его на

http: //.domain.com

Спасибо

Ответы [ 3 ]

0 голосов
/ 20 июня 2010

Модифицированное проверенное решение, но только для http.

#Allow domain of the form www.domain.com
RewriteCond %{HTTP_HOST} !^www\.([^\..]*)\.([^\..]*)$ [NC]

#Otherwise any other form must be rewritten to remove www
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]

#Substitue the complete domain using group %1 in the parentheses of the above condition
RewriteRule ^(.*)$ http://%1/$1 [R=301,NC,L]
0 голосов
/ 21 ноября 2016

Это выполнит работу и вернется с http://

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

. Для https просто добавьте s, как показано ниже:

RewriteCond %{HTTP_HOST} ^www\.(.*)
RewriteRule ^(.*) https://%1/$1 [R,L]

Обратите внимание, что это можно сделать в httpd.конф.Использование .htaccess популярно, но на самом деле замедляет работу сайта, особенно если есть вложенные каталоги.

Вам нужно:

Options +FollowSymLinks

Но вам не нужны индексы.

0 голосов
/ 18 июня 2010

Вы можете использовать модуль перезаписи для удаления www.когда он предшествует поддомену.Таким образом, адрес, такой как: www.sub1.domain.com, будет перенаправлен на sub1.domain.com:

<IfModule mod_rewrite.c>
   Options +FollowSymLinks
   Options +Indexes
   RewriteEngine On
   RewriteBase /
   RewriteCond %{HTTP_HOST} !www.domain.com$ [NC]
   RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
   RewriteRule ^(.*)$ http://%1/$1 [R=301,NC,L]
</IfModule>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...