如果我放<base href="http://www.example.com"/>
,那么如果我在浏览器中访问WWW.example.com一切都很好,但是当我去example.com时,Cascade样式表文件和java脚本文件的某些内容被搞砸了(例如,引导程序中的图标不显示),直到我点击我网站上的其他页面,然后转换为WWW.example.com/page,从那里一切都很好......我试过<base href="http://example.com"/>
并继续到WWW.example.com,它只是相反的方式。我怎样才能解决这个问题?
答案 0 :(得分:0)
您可以将base
标记设置为用户输入的相应子域。或者,您只需使用简单的www
规则将所有请求重定向到mod_rewrite
子域。
走第一条道路,我相信你可以用javascript做到这一点,但不是100%肯定。在代码开头尝试使用此代码,默认情况下使用www
的基本代码。
if(document.URL.indexOf('://www.')===-1){
var base = document.getElementsByTagName('base')[0];
base.href = base.href.replace('://www.','://');
}
另一种方法是使用mod_rewrite
,这可以通过apache中的.htaccess
文件轻松完成。
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
我个人认为第二种方式是更好的选择。首先是因为我不完全确定javascript场景会起作用,即使它确实如此,javascript也不会在所有浏览器上运行,特别是在机器人上运行。所以我建议你使用.htaccess
。祝你好运!
答案 1 :(得分:0)
如何编辑DNS信息以将“example.com”链接设置为真正的ip并且不作为301重定向