使用mod_rewrite后,我的css imges js路径发生了变化

时间:2015-07-03 19:04:41

标签: html css apache .htaccess mod-rewrite

我已经改变了我的网址

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]

2 个答案:

答案 0 :(得分:0)

第一种方法

如果这些部分是硬编码的,您只需更改以前添加../的链接:

path/to/my/assets/style.css

会变成

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

第二种方法

您可以使用.htaccess作为Marc建议(假设您的资源文件夹为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

答案 1 :(得分:0)

  

一个解决方案是使用绝对路径(ex / css或/ js而不仅仅是css /,/ js,但这看起来不是一个可靠的解决方案,因为我们要在所有文件上更改它,

这是因为您的相对URI的基数已更改。最初,当页面为/时,基数为/course.php?id=1001,浏览器会正确填充/基础的相对链接。但是当浏览器转到/course/1001这样的页面时,基础突然变为/course/,它会尝试将其附加到所有相对URL之前,因此它们都不会加载。

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

<base href="/">