需要mod_rewrite URL信息

时间:2009-05-21 07:27:14

标签: .htaccess mod-rewrite url-rewriting

我是这个mod_rewrite的新手。 我已经成功地重写了这样的URL: http://mydomain.com/products/12 http://mydomain.com/products.php?prodId=12http://mydomain.com/products/12

但是当我在地址栏中提供http://mydomain.com/products.php?prodId=12时,不会加载css和js文件。

但是当我访问Options +FollowSymlinks RewriteEngine on RewriteRule ^products/([0-9][0-9])/$ /products.php?prodId=$1 [L] 时,js和css正确加载。如果我遗失了什么,请告诉我。

我的.htaccess看起来像这样:

{{1}}

我的css和js文件夹也在同一个文件夹中。

2 个答案:

答案 0 :(得分:5)

您需要知道相对URI(因此绝对和相对URI路径)也是从基URI解析的,如果没有显式声明,则是当前文档的URI。

因此,如果您使用相对URI /products/12引用foo/bar的外部资源,则会将其解析为/products/foo/bar

要解决此问题,请使用绝对URI路径(以/开头)或绝对URI(从协议开始)或明确设置除当前之外的基本URI(请参阅BASE HTML element)。但请注意,更改基URI会产生一些副作用,因为它会影响每个相对URI。

答案 1 :(得分:3)

您必须使用脚本/ css文件的相对链接,如下所示:

<script src="my.js"></script>

这适用于旧的URL,但在新的URL上,它将在“products”目录中查找,当然不存在。您可以使用绝对网址:

<script src="/my.js"></script>