Apache-2.2
為什麼此模式與 RewriteCond 中的 QUERY_STRING 不匹配,而在 preg_match 中匹配?
這是我的
.htaccess
文件中的內容。RewriteEngine on RewriteCond %{QUERY_STRING} ^(run=[a-z0-9A-z]{13})$ RewriteRule %{QUERY_STRING} \? [L]
我所做的只是重寫
QUERY_STRING
所有QUERY_STRING
類似的run=4f13665700694
東西,什麼也不做。網址範例: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
即一場成功的比賽。
我不明白為什麼。我在這裡想念什麼?
好的,所以,這將
/runs/
使用 13 個字元的字母數字run
參數作為其查詢字元串中唯一的內容的請求,剝離查詢字元串,然後重寫為/runs/index.php
:RewriteCond %{QUERY_STRING} ^run=\w{13}$ RewriteRule ^/runs/?$ /runs/index.php? [L]