剥离www。来自域在主站点上工作但不在子域中工作

时间:2011-02-22 16:22:08

标签: .htaccess mod-rewrite

我目前的.htaccess文件如下:

ErrorDocument 404 /404.php
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php 
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,NC,L]

当我访问我的主站点:www.site.com时,www。被剥离,应该是一切正常。

当我以适当的格式(http://sub.site.com)访问子域名时,每个标记都可以正常工作。

当用户输入www时会出现问题。作为子域的一部分,所以: http://www.sub.site.com不会删除www。而是重定向到媒体寺庙托管的“子域不存在”页面(顺便说一句,令人难以置信)。

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

更改这些行:

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

要:

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

答案 1 :(得分:0)

我相信我必须“欺骗”系统,但找到了一种工作方法:

我首先必须使用以下命令在我的子域中创建一个vhost.conf文件:

  

ServerAlias www.subdomain.site.com

重置Plesk和我的Apache服务器之后,我还在我的子域中添加了一个通配符DNS记录:

  

*。subdomain.site.com。适当的IP地址记录

这似乎已经解决了我的问题,但仍然无法弄清楚为什么前者无效。