mod_rewrite和PHP的错误?

时间:2012-06-10 04:28:55

标签: php apache mod-rewrite

我遇到了一个错误,我不确定它的来源。我使用mod_rewrite进行以下操作:

 RewriteRule ^stuff$ index.php?page=stuff [L]

它工作得很好,但是当我使用

 RewriteRule ^(.+?)$ index.php?page=$1 [L]

CSS不再应用于页面,代码似乎不会读取GET请求。

有人可以详细说明为什么会发生这种情况吗?

2 个答案:

答案 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路径以及将来重写时出现的问题。