這是我在我的.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