301 Htaccess RewriteRule Query_String

Проблема: посетители открывают URL-адрес website.com/?i=133r534|213213|12312312, но этот URL-адрес больше недействителен, и им нужно для переадресации на website.com/#Videos:133r534|213213|12312312

Что я пробовал: В течение последних часов я испробовал много правил mod_rewrite (.htaccess) с использованием Query_String, и все они потерпели неудачу. Последнее сообщение в этой теме показывает решение этой проблемы, но что правило в моей ситуации.

Мне очень любопытно, как бы вы решили эту проблему :)!


person MeProtozoan    schedule 28.09.2010    source источник


Ответы (1)


Следующее будет обрабатывать простой случай, который вы показываете. Вам нужно будет добавить дополнительную логику, если вам нужно разрешить другие параметры в строке запроса или именах файлов перед ?.

RewriteEngine On
RewriteCond %{QUERY_STRING} ^i=(.*)
RewriteRule ^.*  /#Video:%1? [NE,R=permanent]

Почему это сложно?

  • RewriteRule не просматривает строку запроса, поэтому вам нужно использовать RewriteCond для оценки переменной QUERY_STRING и захвата части, которая вам понадобится позже (ссылка через %1)
  • символ решетки (#) обычно экранируется, вы должны указать флаг [NE]
  • Отставание? в строке подстановки требуется подавить исходную строку запроса

Я тестировал это на Apache 2.2.

person TomG    schedule 29.09.2010
comment
Отличный Том! Большое спасибо, это работает для меня, и теперь я понял концепцию :) - person MeProtozoan; 29.09.2010