0

我遇到了一个错误,我不确定它的来源。我将 mod_rewrite 用于以下内容:

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

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

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

CSS 不再应用于页面,并且代码似乎没有读取 GET 请求。

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

4

2 回答 2

4

如果文件存在,则添加重写条件以不重写并使用 QSA 标志以允许附加参数:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?page=$1 [L,QSA]
于 2012-06-10T04:34:19.553 回答
1

由于您的查询字符串已转换为类似目录的结构,因此如果您未使用任何路径披露,apache 将检查目录。

因此,如果您像这样包含 css 文件: <link href="skins/style.css">

您需要公开文件的完整网络路径:

<link href="http://site.com/skins/style.css">`

此外,对于您的 css 文件中的所有图像,您需要执行相同的操作,包括完整的 web 路径以避免将来重写时出现问题。

于 2012-06-10T04:38:30.210 回答