我正在使用这个代码:
RewriteEngine on
RewriteRule ^(.*)/exampelFile exampelFile.php?data=$1 [L]
我的问题是页面无法加载我的 css 和 js 文件。似乎 php 页面本身正在加载
www.example.com/some text/exampelFile...
代替
www.example.com/exampelFile?data=some text...
这就是为什么它找不到 css 和 js 文件
答案1
这是因为您的重写规则仅进行内部重写,不会将浏览器重定向到该 URL。因此,浏览器仍然在页面上www.example.com/some_text/exampelFile
;您的 HTML 中的所有相对链接和位置exampelFile.php
都是相对于该位置,而不是相对于实际文件位置,因为它们是由浏览器获取的。
您可以通过使用以下方式进行重定向来防止这种情况RewriteRule
的旗帜R
:
'redirect|R [=code]'
(强制重定向)在 Substitution 前加上前缀 (使新 URL 成为 URI)以强制进行外部重定向。如果没有给出代码, 将返回
http://thishost[:thisport]/
HTTP 响应(临时移动)。302
结果:
RewriteEngine on
RewriteRule ^(.*)/exampelFile /exampelFile.php?data=$1 [L,R=301]