我是这个mod_rewrite的新手。
我已经成功地重写了这样的URL:
http://mydomain.com/products/12
http://mydomain.com/products.php?prodId=12
:http://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文件夹也在同一个文件夹中。
答案 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>