mod_rewrite RewriteRule для обработки HTML-сущностей - PullRequest
1 голос
/ 12 июля 2010

По какой-то причине мы получаем кучу входящего трафика по URL-адресам, содержащим HTML-объекты.

* 1003 Е.Г. *

http://www.ourdomain.com/index.php?key1=value1&key2=value2

Я хочу создать RewriteRule для замены этих сущностей HTML (в частности, & amp; &) и переадресовать людей на исправленный адрес.

Я пробовал это:

RewriteRule & & [R=permanent]

и

RewriteRule & &

Но ничего не происходит.

(Кстати. Я знаю, что это ужасный и опасный способ решить чужую проблему, но мне просто нужно сделать это временно.) 1022 *

Спасибо за любую помощь ...

Ответы [ 2 ]

4 голосов
/ 12 июля 2010

Это должно сработать;

RewriteEngine On
RewriteCond %{QUERY_STRING} (.*)&(.*)
RewriteRule .* /index.php?%1&%2 [N,R=301]

Это, по сути, говорит;

  • Есть ли & в строке запроса?
  • Если да, сопоставьте все до и после него, а затем вставьте их вместе с &
  • Флаг N в правиле фактически говорит: «продолжайте делать это до тех пор, пока условие больше не будет соответствовать»

Ознакомьтесь с документацией mod_rewrite , включая RewriteCond и флаги правил .

0 голосов
/ 12 июля 2010

Чтобы любое переписывание работало, механизм перезаписи должен быть включен, но, возможно, вы уже исправили это:

# following statement must come before any other rewrite statements
# and must be enabled per virtual host configuration
RewriteEngine On

Амперсанд - это особый метасимвол. Очевидно, что люди, которые копировали и вставляли ваши ссылки, делали это в редакторе, который должным образом экранировал амперсанды в & (или, более технически правильно, &, если это произошло внутри a-тега). Я не уверен на 100%, но я считаю вероятным, что амперсанд должен быть экранирован, попробуйте это:

RewriteRule \& \&

Чтобы узнать, как происходит перезапись, что она переписывает и почему, вы должны включить ведение журнала перезаписи (убедитесь, что Apache может записать в местоположение RewriteLog):

RewriteLog "somepath.log"
RewriteLogLevel 3

где уровень 9 самый высокий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...