Я использую Apache2 и mod_rewrite, чтобы скрыть мои строки запроса. Вот эти правила.
RewriteCond %{QUERY_STRING} ^query=(.*)$
RewriteRule (.*) /search/%1 [R=301,L]
RewriteRule ^search\/?$ /search/?query=test [R=301,L]
Когда я посещаю /search
(или /search/
), меня правильно перенаправляют на /search/?query=test
(согласно последнему правилу)
Оттуда RewriteCond
и RewriteRule
должны включиться и перенаправить меня на /search/test
, верно? Из того, что я понимаю, %1
в моем первом RewriteRule
соответствует (.*)
в RewriteCond
, который должен содержать test
.
Однако на самом деле меня перенаправляют на /search/test/?query=test
. Итак, правило работает, но по какой-то причине строка запроса добавлена. Это опция QSA, автоматически или как-то добавляемая?
Затем я застрял в бесконечном цикле перенаправления на /search/test?query=test
, потому что первые RewriteCond
и RewriteRule
включаются снова, и снова, и снова ...
Что я делаю не так?!
Спасибо!