使用mod_rewrite后,我的css imges jspath被改变了

我已经改变了我的url

http://example.com/course.php?id=1001 

 http://example.com/course/1001 

但改变了所有的CSS js和图像的url无法正常工作

我已经使用这个代码

 RewriteEngine On RewriteRule ^course/([A-Za-z0-9-]+)/?$ coursedetails.php?id=$1 [NC,L] 

一个解决方案是使用绝对路径(ex / css或/ js而不是css /,/ js,但这不是一个可靠的解决方案,因为我们必须在所有文件上进行更改,

这是因为你的相对URI有其基础改变。 最初的基础是/当页面是/course.php?id=1001 ,浏览器正确地填充与/ base的相对链接。 但是当浏览器转到像/course/1001这样的页面时,基地突然变成了/course/并且它试图在所有的相对URL之前追加这个URL,因此它们都没有加载。

您可以将链接设置为绝对路径,也可以更改网页标题中的URI基础(位于<head> </head>标记之间):

 <base href="/"> 

第一种方法

如果这些部分是硬编码的,你可以简单地改变你的链接添加../之前:

path/to/my/assets/style.css

会成为

../path/to/my/assets/style.css


第二种方法

您可以使用.htaccess作为马克建议(假设您的资产文件夹是assets

 RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^course/assets/(.*) assets/$1 

或者使用重定向

 RedirectMatch 303 /courses/assets(.*) /assets/$1 

注释303请参阅其他似乎更为合适的响应代码http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.4