为什么这个RewriteRule不起作用?

时间:2012-09-13 00:05:13

标签: .htaccess mod-rewrite cookies url-rewriting

我有一个.htaccess RewriteRule,如果他们没有/coming_soon/ cookie,会将用户重定向到dev,但由于某种原因,即使我有cookie,它也会重定向我。此规则昨晚正常运行,直到我添加了另一个条件,允许我的Google网站站长工具验证文件的请求通过。以下是我的.htaccess的内容:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_COOKIE} !^\dev=$ [NC]
RewriteCond %{REQUEST_URI} !/google********.html
RewriteRule ^(.*)$ coming_soon [QSA,L]

说实话,我并不真正理解RewriteRules的语法,其中大部分都是我从互联网上捡到的,这使得它很难调试。

我在本地设置了cookie并验证它是否存在,所以有人知道我做错了吗?

1 个答案:

答案 0 :(得分:1)

你有一个迷失的反斜杠:

# right hree ----------------v
RewriteCond %{HTTP_COOKIE} !^\dev=$ [NC]

这使得它在那里期待一个数字而不是“d”。

另请注意,这仅适用于只有1个Cookie并且恰好是dev=的情况。您可能希望通过将正则表达式更改为:

来扩展它
RewriteCond %{HTTP_COOKIE} !dev=(.*) [NC]