Пренаписване на URL адреси с един низ на заявка към друг URL адрес с различен низ на заявка

Опитвам се да изпълня някои пренасочвания, както следва:

#Basic Rule Set
RewriteRule ^/path$ http://newhost.com/Page?pagename=form1000 [R=301]
RewriteRule ^/path/index.html$ http://newhost.com/Page?pagename=form1000 [R=301]

които работят добре.

Въпреки това, пренасочванията с низове на заявка в източника и местоназначението ме връщат към горния целеви URL адрес. за напр.

# Advanced  Rule Set
RewriteRule ^/path/index.html?var=foo$ http://newhost.com/Page?pagename=form1000?id=hello  [R=301]
RewriteRule ^/path/index.html?var=bar$ http://newhost.com/Page?pagename=form1000?id=byebye [R=301]
RewriteRule ^/path/index.html?var=xyz$ http://newhost.com/Page?pagename=form1000?id=world  [R=301]

всички пренасочват към http://newhost.com/Page?pagename=form1000. Опитах RewriteCond %{QUERY_STRING} ^var=(.*)$ [NC] и RewriteCond %{REQUEST_URI} ^/path/index.html [NC] пред горните три правила и все още съм пренасочен към http://newhost.com/Page?pagename=form1000. Размених реда на основните и разширените набори от правила и всички пренасочват към http://newhost.com/Page?pagename=form1000.

Някакви идеи как мога да накарам тези набори от правила да работят? CentOS 6.x, Apache 2.2.


person KM.    schedule 12.04.2013    source източник
comment
Заявката не присъства в URI пътя на правилото. Трябва да го тествате с RewriteCond %{QUERY_STRING}.   -  person Felipe Alameda A    schedule 13.04.2013
comment
Може би този отговор помага stackoverflow.com/a/14899735/1741542   -  person Olaf Dietsche    schedule 13.04.2013
comment
@faa: Опитах го с RewriteCond %{QUERY_STRING} ^var=(.*) [NC] със същия резултат. Обърнете внимание, че %1 не се използва в целевия URL адрес.   -  person KM.    schedule 13.04.2013
comment
@faa: Изтрихте ли отговора си? Успях да го използвам, за да заработя нещата. Ако искате, публикувайте го отново и аз ще го приема. Благодаря за вашата помощ! (-:   -  person KM.    schedule 15.04.2013


Отговори (1)


Можете да опитате това вместо това:

# Advanced  Rule Set
RewriteCond %{QUERY_STRING} var=foo [NC]
RewriteRule ^path/index.html/? http://newhost.com/Page?pagename=form1000?id=hello  [R=301,L,NC]

RewriteCond %{QUERY_STRING} var=bar [NC]
RewriteRule ^path/index.html/? http://newhost.com/Page?pagename=form1000?id=byebye [R=301,L,NC]

RewriteCond %{QUERY_STRING} var=xyz [NC]
RewriteRule ^path/index.html/? http://newhost.com/Page?pagename=form1000?id=world  [R=301,L,NC]
person Felipe Alameda A    schedule 12.04.2013
comment
Ако има петли, моля, уведомете ме. - person Felipe Alameda A; 13.04.2013
comment
@КМ. Правилата са за един .htaccess файл. Ако са в основните конфигурационни файлове, към path трябва да се добави водеща наклонена черта, като това ^/path..., както имате във въпроса. Ако има някакъв проблем, моля, уведомете ме. - person Felipe Alameda A; 13.04.2013
comment
Благодаря @faa, това беше точно това, което търсех. - person KM.; 16.04.2013
comment
Добре дошли @KM. Благодаря, че ме уведомихте, след като го изтрих. - person Felipe Alameda A; 16.04.2013