Какой RewriteRule будет перенаправлять на основе параметров строки запроса? - PullRequest
1 голос
/ 16 января 2011

Если запрашиваемая страница page1.html и в строке запроса uin - это что-то, кроме 12 или 13, пусть они увидят эту страницу page1.html, в противном случае перенаправьте их на page2.html


Обновление: Кстати, в строке запроса есть и другие параметры.Их также следует отправлять на любую страницу.

Ответы [ 2 ]

0 голосов
/ 16 января 2011

Это перенаправит на page2.html, если uin = 12 или uin = 13.Вся строка запроса будет отправлена ​​на страницу page2.html:

 # EDIT: Doesn't properly handle all cases
 RewriteCond %{QUERY_STRING}  [\&]+uin=1[23][&]+ [OR]
 RewriteCond %{QUERY_STRING}  ^uin=1[23][&]+
 RewriteRule ^/page1\.html   /page2.html  [R]

EDIT : это намного лучше и будет обрабатывать параметр в любой позиции в строке запроса, начиная сили end, а также будет учитывать фильтрацию случаев, когда строка находится в другом параметре, например, suin = 123

 RewriteCond %{QUERY_STRING} ^(.*&)*uin=1[23](&.*)*$
 RewriteRule ^/page1\.html   /page2.html  [R]

Я тестировал в следующих случаях:

Redirected:
http://local.sandbox.com/page1.html?hello=world&uin=13&test=1
http://local.sandbox.com/page1.html?uin=12&test=1
http://local.sandbox.com/page1.html?uin=12
http://local.sandbox.com/page1.html?uin=13
http://local.sandbox.com/page1.html?uin=13&t=t
http://local.sandbox.com/page1.html?t=t&r=r&uin=13&t=3
http://local.sandbox.com/page1.html?t=t&uin=13

Не перенаправил:
http://local.sandbox.com/page1.html?uin=11&test=1
http://local.sandbox.com/page1.html?hello=world&uin=1&test=1
http://local.sandbox.com/page1.html?hello=world&ui=13&test=1
http://local.sandbox.com/page1.html?t=t&&r=r&suin=13&t=3
http://local.sandbox.com/page1.html?t=t&&r=r&uin=134&t=3
http://local.sandbox.com/page1.html?suin=134&t=3
http://local.sandbox.com/page1.html?auin=13&t=t
http://local.sandbox.com/page1.html?uin=134&t=3
http://local.sandbox.com/page1.html?t=t&uin=134
http://local.sandbox.com/page1.html?t=t&auin=13

0 голосов
/ 16 января 2011

Условие перезаписи, которое вы ищете, это% {QUERY_STRING}

Вот еще один вопрос SO, делающий нечто подобное: Перенаправление URL-адресов (с конкретными параметрами GET)

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