我遇到了一个错误,我不确定它的来源。我使用mod_rewrite进行以下操作:
RewriteRule ^stuff$ index.php?page=stuff [L]
它工作得很好,但是当我使用
时 RewriteRule ^(.+?)$ index.php?page=$1 [L]
CSS不再应用于页面,代码似乎不会读取GET请求。
有人可以详细说明为什么会发生这种情况吗?
答案 0 :(得分:4)
如果文件存在,则添加重写条件以不重写&使用QSA标志允许附加参数:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?page=$1 [L,QSA]
答案 1 :(得分:1)
由于您的查询字符串已转换为类似目录的结构,因此如果您没有使用任何路径披露,apache将检查该目录。
所以,如果你像这样包含css文件:
<link href="skins/style.css">
您需要向文件披露完整的Web路径:
<link href="http://site.com/skins/style.css">`
此外,对于css文件中的所有图像,您还需要执行相同操作,包括要避免的完整Web路径以及将来重写时出现的问题。