htaccess使用cname,vhosts和htaccess将所有子域名+ www重定向到域名

时间:2014-02-21 05:58:01

标签: php apache .htaccess mod-rewrite redirect

对于知道的人我有一个相当简单的问题,我无法找到我需要的答案。我已经转移到vps并尝试自己配置vm。我需要重定向:

  1. domain.com - 默认
  2. www.domain.com - > domain.com
  3. * .domain.com - > domain.com
  4. 我已经完成.htaccess for www - >非www,所以我有:

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

    添加了A和CNAME:

    • www - @
    • * - @

    添加了虚拟主机

    • ServerAlias www.domain.com * .domain.com

    我做得对吗(CNAME,vhost,.htaccess)还是我可以做得更简单?

    你可以帮我重定向* .domain.com - > domain.com(猜测.htaccess)?

3 个答案:

答案 0 :(得分:6)

  

重定向* .domain.com - > domain.com

只需将您的规则更改为:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^[^.]+\.(domain\.com)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L,NE]

答案 1 :(得分:4)

在Apache配置中将服务器别名设置为* .domain.com,位于服务器名称下方:

ServerName domain.com
ServerAlias *.domain.com

所有非www:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.+)\.domain\.com$   [NC]
RewriteRule ^ http://domain.com/  [L,R]

所有内容到www:

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^(.+)\.domain\.com$   [NC] 
RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^ http://www.domain.com/  [L,R] 

答案 2 :(得分:0)

创建.htaccess并粘贴此

 RewriteEngine On
 RewriteCond %{HTTP_HOST} ^(.+)\.domain\.com$   [NC]
 RewriteRule ^ http://domain.com/  [L,R]