需要在Apache中一般从二级子域中删除www(使用重写)

时间:2010-06-18 18:30:27

标签: apache subdomain

我遇到了问题,但有许多子域:例如......

sub1.domain.com和new.domain.com以及xsub.domain.com以及更多这样的人。

如何使用一个通用规则从前面删除www。

E.g。如果有人键入www..domain.com或http://www .. domain.com将其更改为

的http://.domain.com

由于

3 个答案:

答案 0 :(得分:0)

您可以使用重写模块删除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>

答案 1 :(得分:0)

修改过的测试解决方案,但仅适用于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]

答案 2 :(得分:0)

这将完成工作,并使用http://

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

对于https,只需添加s,如下:

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

请注意,这也可以在httpd.conf中完成。使用.htaccess很流行,但实际上会降低网站速度,特别是如果有嵌套目录的话。

你确实需要:

Options +FollowSymLinks

但你不需要索引。