带有斜杠的网址断开布局 - 如何在不使用基本标记的情况下解决此问题?

时间:2010-09-24 10:28:28

标签: url .htaccess mod-rewrite

我正在开发一个网站,我已经设置了以下htaccess规则

RewriteEngine On
#RewriteRule ^([0-9]+)?$ index.php?page=$1
#RewriteRule ^([0-9]+)/([0-9]+)?$ index.php?page=$1&post=$2
RewriteRule ^([A-Za-z0-9-]+)?$ index.php?pagename=$1
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)?$ index.php?pagename=$1&post=$2

这可确保代替http://www.mysite.com/index.php?page=2显示页面

我开始使用更友好的http://www.mysite.com/about-us

方法

*注意我没有包含尾部斜杠。

在页面中,我的css文件包括在:

<link href="css/style.css" rel="stylesheet" type="text/css" />

位于www.mysite.com/css/style.css

这很有效,但是如果我想要包含一个尾部斜杠(即http://www.mysite.com/about-us/

然后我的css文件没有加载,我得到一个错误,Firefox源浏览器说:

在此服务器上找不到请求的网址http://www.mysite.com/about-us/css/style.css

这是因为该页面确定将我们作为目录而不是页面。

我并不热衷于使用像<base href="http://www.mysite.com/" />

这样的basehref标记

还有其他选择吗?

1 个答案:

答案 0 :(得分:0)

相对URL是从基本URL解析的,如果没有另外指定,则基本URL是使用相对URL的文档的URL。

现在要修复此错误引用,您有两个选择:

  • 使用BASE元素
  • 更改基本网址
  • 更改参考
    • 通过调整基本URL路径的相对URL路径,或
    • 仅使用绝对URL路径或
    • 使用绝对URL。

由于您不想使用BASE元素,因此您可能需要调整用于引用外部资源的URL。

最简单的方法是使用绝对URL路径/css/style.css,使其独立于实际的基本URL路径。