我已经改变了我的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