解决Addon域名可用主域名的子目录访问的问题

cPanel的面板存在一个问题,Addon的域名的目录是Public_html下的一个子目录(新版的cPanel可以改变这个限制,但是大部分主机商的还是有限制),所以通过 主域名/目录 的形式也可以访问这个addon的网站,这样就存在URL规范化的问题。

一般来说,这个问题并不会造成多大影响,因为只要你不要把 主域名/目录 这种形式的链接发布出去,搜索引擎一般是抓不到的,也就不会收录这种url了,另外还有一种方式就是在robots.txt文件中禁止索引addon的域名的目录,就更保险了。

今天给大家一个更彻底的解决办法,直接301转向或者返回403错误

方案一:

将下面的rewrite(什么是Rewrite见:http://www.zzbaike.com/wiki/Rewrite )规则放到addon域名的目录下的.htaccess文件:

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

这个规则的作用和wordpress程序自身的特征一样,只要不是你设置的那个域名访问的,就自动转向到这个域名上,主域名/目录 这种形式的url自然会转向了。另外这个规则还有很多用处,例如规范www,防止有人把域名解析到你的ip上等等,当然这些是具体应用,核心就是只要不是你设置的那个域名访问的,就自动转向到这个域名上。

另外也可以针对这个问题专门写一个更具体的规则:

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

这个规则的作用就是如果请求的是主域名就转向到addon域名下。所以这个规则不要放错位置,要放在addon域名的目录下,千万别放到主域名的目录下。当然也可以更进一步去匹配目录然后转向。

如果不想要转向而是禁止访问,就把每个方案的第三句修改为:

RewriteRule ^(.*)$ – [F]

因为是用rewrite实现的,只要支持.htaccess和rewrite的虚拟主机就可行,另外不论是否是cpanel主机,如果有类似问题就可以用这种方法解决.

更多阅读内容: Rewrite .htaccess 301转向

Post Footer automatically generated by wp-posturl plugin for wordpress.

November 10th, 2010  in 美国虚拟主机 No Comments »

Leave a Reply