这是我在我的.htaccess
文件中。为什么此模式在匹配preg_match时与RewriteCond中的QUERY_STRING不匹配?
RewriteEngine on
RewriteCond %{QUERY_STRING} ^(run=[a-z0-9A-z]{13})$
RewriteRule %{QUERY_STRING} \? [L]
所有我做的是重写QUERY_STRING
类似所有QUERY_STRING
到run=4f13665700694
,什么也不做。一个URL示例:http://thinkingmonkey.me/runs/?run=4f13665700694
。所以,RewriteCond应该匹配。但上述不起作用。
但是,模式似乎是正确的。因为,均为preg_match
& RewriteRule
使用PCRE - Perl Compatible Regular Expressions
。我试过用preg_match
。
$subject = "run=4f13665700694";
$pattern = "/^(run=[a-z0-9A-z]{13})$/";
echo preg_match($pattern, $subject);
而作为例外上述将输出:
1
即成功的匹配。
我不明白为什么。我在这里错过了什么?
通过“无所事事”,在这种情况下是否要重写为“http://thinkingmonkey.me/runs/?”? – TerryE 2012-01-16 10:28:48
@TerryE是的。但是,我在这里解决了这个问题。 '%{QUERY_STRING}'不能用作要在'RewriteRule'中匹配和替换的模式。 – ThinkingMonkey 2012-01-16 15:13:07