重写规则和相对路径样式表的问题
问题描述:
的重写规则是这样的:重写规则和相对路径样式表的问题
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目录什么(除非有某种原因.htaccess文件中的CSS,这将是不寻常的)。
你能否扩展你的问题并告诉我们你想用这个重写规则来达到什么目的?实际上,它会通过/来接收每个请求并重写它。 – 2011-04-06 18:44:05
是的。我想拥有mydomain.com/searchterm/page URL结构,而忽略像/ css /和/ images /和/ includes /等目录中的文件。 – Kevin 2011-04-06 18:54:20
要清楚,'$ 1'将包含所有* final *斜杠在URL中,而不是第一个,因为'。*'将匹配任何字符,*包括*任何斜线(除了最后一个,因为它需要匹配整个模式)。这可能是你期望的,但它可能不是,所以我觉得值得一提。 – AgentConundrum 2011-04-06 19:02:24