我已经改变了我的网址
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]
答案 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="/">