我在SO上看到很多关于它的问题,所以我在这里发帖:
我有一个域名www.example.com,我已将.htaccess文件设置为将所有example.com重定向到www.example.com
现在,我(通过我的plesk 10界面)创建了一个子域名abc.example.com,我想要的也是www.abc.example.com所以我输入了(也是在plesk中)这个:
www.abc.example.com. CNAME abc.example.com.
但它不起作用。我是否需要重新加载/重新启动dns?(如果是这样,请告诉我怎么做?)或者我只需要等待一段时间才能传播?
由于我提到的CNAME不起作用,我还在abc文件夹中添加了.htaccess(可能是错误的(我知道,不是很多服务器人:()),如下所示:
RewriteEngine on
RewriteCond %{HTTP_HOST} !^abc.example.com$
RewriteRule ^(.*)$ http://abc.example.com/$1 [R=301]
但没有运气,所以请说清楚。
答案 0 :(得分:1)
最终为我工作的解决方案:
在Plesk中我创建了一个subdomain.domain.com指向让我们说 abc 文件夹,然后我也通过Plesk添加了www.subdomain.domain.com,但指向了相同的 abc文件夹。然后我在这个abc文件夹中添加了.htaccess文件(该子域的所有其他文件都驻留在该文件夹中),现在可以保证所有对subdomain.domain.com的请求都被重定向到www.subdomain.domain.com。这是我的.htaccess文件:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.subdomain.domain.com$ [NC]
RewriteRule ^(.*)$ http://www.subdomain.domain.com/$1 [R=301,L]
希望这会帮助像我这样的人开始。
请注意,将www.subdomain指向同一文件夹的想法归功于用户Bryan White serverfault
答案 1 :(得分:0)
.htaccess应该是这样的:
RewriteEngine on
RewriteCond %{HTTP_HOST} !^abc\.example\.com$ [NC]
RewriteCond %{SERVER_PORT} =80
RewriteRule ^(.*)$ http://abc.example.com/$1 [R=301,L]
RewriteEngine on
RewriteCond %{HTTP_HOST} !^abc\.example\.com$ [NC]
RewriteCond %{SERVER_PORT} =443
RewriteRule ^(.*)$ https://abc.example.com/$1 [R=301,L]
但abc.example.com
和www.abc.example.com
的 DNS条目可能尚未传播。在测试之前,你需要给它一些时间(可能是几个小时)。