Мод перезаписи - динамическая перезапись $ _GET - PullRequest
0 голосов
/ 29 марта 2011

Есть ли в любом случае использование ModRewrite для достижения следующего:

Начальный URL: http://example.com/page?value=test

Перезаписанный URL: http://example.com/page/value/test

OR

Начальный URL: http://example.com/page?value=test&fruit=apple

Перенаправленный URL: http://example.com/page/value/test?fruit=apple

Мне нужно, чтобы это правило было динамичным, поскольку я не знаю всех страниц, для которых оно будет использоваться, и мне также нужно сохранить переменные $ _GET в PHP.

Спасибо

1 Ответ

2 голосов
/ 29 марта 2011

Вопрос имеет смысл, если рассматриваемые URL-адреса хранятся в базе данных, и их необходимо переписывать до тех пор, пока содержимое не будет обновлено с учетом нового шаблона URL-адреса. Который, для прояснения вопроса, будет рассматриваться как редирект , а не переписывать, что улучшает SEO. Затем, как отмечается в комментариях выше, URL-адрес может быть переписан , чтобы обеспечить PHP правильные параметры URL-адреса. Если это то, что задумал Джеймс, то поможет следующий конфиг:

### 301 redirect old query string URLs to pretty URLs
### This will help search engines index the new URLs, 
### not ones that are linked in content
### This is rather messy due to the 
### http://example.com/page/value/test?fruit=apple example
RewriteCond %{QUERY_STRING} value=([^&]*)
RewriteRule (.*) /page/value/%1 [R=301,E=rewrite:true]

RewriteCond %{ENV:rewrite} true
RewriteCond %{QUERY_STRING} !&
RewriteRule (.*) $1? [R=301,L]

RewriteCond %{ENV:rewrite} true
RewriteCond %{QUERY_STRING} &([^=]*)=(.*)$
RewriteRule (.*) $1?%1=%2 [R=301,L]

### Rewrite pretty urls with usable parameters
### [QSA] will maintain extra params such as &fruit=apple
RewriteRule /page/value/(.*) /page.php?value=$1 [QSA]

Это грязно, но я сталкивался с подобными ситуациями, когда перенаправление старых URL-адресов, хранящихся в базе данных, было необходимо до обновления содержимого.

Надеюсь, это поможет.

...