重写规则和样式表问题的相对路径


Rewriterule and relative path to style sheet question

重写规则是这样的:

RewriteRule ^(.*)/(.*)$ index.php?search=$1&Page=$2

对样式表的引用如下:

<link type="text/css" rel="stylesheet" href="/css/style.css">
当我把

放在样式表上重写时被忽略。请帮我写正确的规则,谢谢!

这是在。htaccess中完成的,在根目录/

我假设您不希望重定向任何针对实际存在的文件的请求,而不仅仅是CSS文件。例如,如果您有一个/images目录,其中包含图像文件,那么您可能不希望PHP脚本处理该目录,就像您不希望它处理CSS文件一样。

这些是交付的"标准"规则:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

这些条件表示"如果下面的条件为假,忽略下一个RewriteRule"。要评估的实际条件是检查,以确保请求不是针对实际存在的文件或目录。

这意味着当您请求/css/style.css时,Apache将看到该名称的文件已经存在,因此它将忽略您的重写并直接提供文件。

指向样式表的链接被重写为index.php。为了避免这种情况,可以这样开头:

RewriteRule ^css/ - [NC,L]

这将导致css目录中的任何内容都不会被重写(除非由于某种原因,css中存在。htaccess文件,这是不寻常的)。