我目前的.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。而是重定向到媒体寺庙托管的“子域不存在”页面(顺便说一句,令人难以置信)。
有什么建议吗?
答案 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地址记录
这似乎已经解决了我的问题,但仍然无法弄清楚为什么前者无效。