这是我的.htaccess
文件。
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
: 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
参数作为唯一的查询string,剥离查询string,并重写为/runs/index.php
:
RewriteCond %{QUERY_STRING} ^run=\w{13}$ RewriteRule ^/runs/?$ /runs/index.php? [L]