当我有<base href =“”/>与www在其中时,没有www工作不正常的链接

时间:2013-11-22 15:20:31

标签: javascript html css twitter-bootstrap

如果我放<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,它只是相反的方式。我怎样才能解决这个问题?

2 个答案:

答案 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重定向