0

我已经弄清楚 Mod rewrite 现在是如何工作的,但是我遇到了一个新问题。

htaccess 代码

RewriteEngine On
RewriteRule ^([A-Za-z0-9-]+)/$ http://localhost/testblog/index.php?category=$1

我现在知道了:localhost/testblog/dogs/

等于:localhost/testblog/index.php?category=dogs

但是,当我在 index.php 文件上放置链接时;<a href="dogs/"> Dogs </a>该页面(localhost/testblog/dogs/)现在有以 dogs/ 为前缀的样式表,所以样式表看起来像localhost/testblog/dogs/stylesheets/style.css

但是当我与一切链接时,<a href="index.php?category=dogs"> Dogs </a>一切正常;localhost/testblog/stylesheets/style.css

我觉得这很令人困惑,因为我认为它们现在使用 .htaccess 文件等同于同一件事?

我怎样才能用前缀纠正这个问题?希望我已经正确解释了谢谢

4

2 回答 2

0

我认为您的问题可能更多是您链接样式表的方式。您正在重写 /dogs/ 并且我猜您的样式表链接为<link href="stylesheets/style.css" rel="stylesheet" type="text/css">. 因此,当您将浏览器指向 /dogs/ 时,它会尝试加载与 URL 相关的样式表,并且看起来 /dogs/ 是一个文件夹,因此它只是附加stylesheets/style.css到您当前的 URL。我认为最好的选择是绝对链接到样式表,例如:<link href="/testblog/stylesheets/style.css" rel="stylesheet" type="text/css">

于 2013-08-14T12:14:20.067 回答
0

就像 Jonathon 所说的那样,浏览器通过将 href 附加到地址栏上显示的 url 来计算相对链接。要更改这一点,您需要有一个基本标签

<base href="//localhost/testblog">

因此,您的浏览器将通过将您的 href 添加到基本 href 来计算您的链接。

于 2013-08-14T12:21:40.143 回答