以下是我的.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
。因此,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
即匹配成功。
我不明白为什么。我在这里遗漏了什么?
答案1
好的,这将接受一个请求,/runs/
其中 13 个字符的字母数字run
参数作为其查询字符串中的唯一内容,删除查询字符串,然后重写为/runs/index.php
:
RewriteCond %{QUERY_STRING} ^run=\w{13}$
RewriteRule ^/runs/?$ /runs/index.php? [L]