Почему это выражение mod_rewrite неправильно добавляет существующую строку запроса? - PullRequest
0 голосов
/ 19 февраля 2010

Я настоящий новичок в отношении mod_rewrite, поэтому, пожалуйста, не смейтесь. Я использую этот инструмент для тестирования: http://civilolydnad.se/projects/rewriterule/

В основном я хочу переписать

http://hostname/spanish/whatever/

в

http://hostname/whatever/?lang=es

Вот лучшее, что я мог придумать:

RewriteRule ^spanish/(.*)$ $1?lang=es [QSA,L,NC]

, который работает , за исключением , когда запрашиваемая страница уже имеет параметры. В этом случае

http://hostname/spanish/gallery/photos/?page=2

переписывается как

http://hostname/spanish/gallery/photos/?page=2?lang=es

Может ли кто-нибудь помочь этому растерянному новичку? Большое спасибо.

Ответы [ 2 ]

1 голос
/ 19 февраля 2010

По сути, это средство вводит в заблуждение, поскольку было доказано, что правило является правильным при использовании в реальной серверной среде. Спасибо всем.

0 голосов
/ 19 февраля 2010

Как-то так должно помочь.

# Remove query strings from URL
RewriteCond %{THE_REQUEST} ^GET\ /.*\;.*\ HTTP/
RewriteCond %{QUERY_STRING} !^$
RewriteRule .* http://yourdomain.com%{REQUEST_URI}? [R=301,L]
...