Почему этот шаблон не соответствует QUERY_STRING в RewriteCond, в то время как он соответствует preg_match? - PullRequest
0 голосов
/ 16 января 2012

Вот что у меня в файле .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 Ответ

2 голосов
/ 16 января 2012

Я думаю, это как-то связано со второй строкой. Попробуйте изменить его на:

RewriteRule ^(.*) $1?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...