Условията за пренаписване на IIRF / APACHE са неуспешни с низ на заявка

Имам CMS система, която преобразува грозните URL адреси в по-приятелски.

Досега пример, вместо URL адресът на страницата да е нещо подобно:

/pagebase.php?id=3644

Имам настройка за писане на url за всяка страница, за да я направя по-приятелска.

Например:

RewriteRule ^/events$   /pagebase.php?id=3644 [I]

Така че, когато потребителят въведе domain.com/events, те изтеглят над url.

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

www.domain.com/events?y=2010=&m=&1d=2

Това ще се пренапише като

www.domain.com/pagebase.php?id=3366&y=2010=&m=&1d=2. 

Единственият проблем е, че съвпадението за запис на URL адрес е неуспешно, защото не вижда ?y=2010=&m=&1d=2 като низ на заявка, вижда го като част от URL адреса и се проваля.

Трябва да модифицирам моя файл за пренаписване, за да позволя преминаването на низове на заявки.

Искам да направя нещо като RewriteRule ^/events-%QUERYSTRING% $ /pagebase.php?id=3644 + %QUERYSTRING% [I]

Където премахва низа на заявката от съвпадението, но след това го добавя към края на писмения URL адрес. Просто нямам достатъчно познания за това как работят пренаписванията на URL адреси, за да направя това.

Ето пример за моя файл за пренаписване.

RewriteRule ^/events$   /pagebase.php?id=3644
RewriteRule ^/faqs$   /pagebase.php?id=3659
RewriteRule ^/gallery$   /pagebase.php?id=3645
RewriteRule ^/gifts$   /pagebase.php?id=3646

Имам нужда от нещо, което ще работи на всички страници, не искам да променям всяко правило, за да обработвам конкретни низове на заявки, просто искам общи решения, които ще прехвърлят низовете на заявките.


person TroySteven    schedule 10.01.2013    source източник
comment
Добавете [L,QSA] към инструкциите RewriteRule. L означава последно (не продължавайте да пренаписвате), а QSA е Query String Append за добавяне на параметри към вашия URL   -  person Bjørne Malmanger    schedule 11.01.2013
comment
Това май не проработи. Как би изглеждало? Като това RewriteRule ^/events$ /pagebase.php?id=3644 [L, QSA]   -  person TroySteven    schedule 11.01.2013
comment
Виждам, че може да има проблем с комбинирането на низ на заявка с QSA. Мисля, че това ще свърши работа: RewriteRule ^/events$ /pagebase.php?id=3644&%{QUERY_STRING} [L]   -  person Bjørne Malmanger    schedule 13.01.2013


Отговори (1)


Можете да опитате да съпоставите незадължителен низ на заявка и да го добавите от модификатора [QSA]:

RewriteRule ^/events(\?.*)?$   /pagebase.php?id=3644 [QSA,L]
RewriteRule ^/faqs(\?.*)?$     /pagebase.php?id=3659 [QSA,L]
RewriteRule ^/gallery(\?.*)?$  /pagebase.php?id=3645 [QSA,L]
RewriteRule ^/gifts(\?.*)?$    /pagebase.php?id=3646 [QSA,L]
person marapet    schedule 13.01.2013