Добавить параметр в строку запроса с помощью mod_rewrite - PullRequest
2 голосов
/ 03 февраля 2011

Я хотел бы использовать mod_rewrite, чтобы добавить параметр в конец строки запроса. Я понимаю, что могу сделать это, используя флаг [QSA].

Однако мне бы хотелось, чтобы параметр добавлялся ТОЛЬКО, если он еще не существует в строке запроса. Итак, если строка запроса была:

http://www.mysite.com/script.php?colour=red&size=large

Я бы хотел, чтобы вышеуказанный URL был перенаправлен на

http://www.mysite.com/script.php?colour=red&size=large&weight=heavy

Где weight=heavy добавляется в конец строки запроса только в том случае, если этот конкретный параметр не был в первую очередь! Если конкретный параметр уже указан в URL, перенаправление не требуется.

Кто-нибудь может предложить код для размещения в моем файле .htacess, который может это сделать?

Ответы [ 2 ]

8 голосов
/ 03 февраля 2011

РЕДАКТИРОВАТЬ: протестировал и изменил его, теперь он работает для меня

Полагаю, вы хотите добавить весовой параметр по умолчанию, если веса нет вообще:

RewriteEngine on
RewriteBase /
RewriteCond %{QUERY_STRING} !weight=
RewriteRule ^script.php     script.php?weight=heavy [R,L,QSA]

По сути это то же самое, что ответил @coreyward, но немного более конкретно. (Флаг R, чтобы сделать изменение видимым, и весовой параметр не должен быть тяжелым.)

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

5 голосов
/ 03 февраля 2011

Это действительно странная вещь. Как будто вы устанавливаете значение по умолчанию для вашей системы, что довольно стандартная вещь. Проблема заключается в том, что нецелесообразно и неудобно устанавливать значение по умолчанию в определении VHost или файле .htaccess, где вы буквально настраиваете Apache.

Я советую не делать это таким образом, но это быстрый и грязный способ сделать то, что вы ищете:

RewriteCond %{QUERY_STRING} !weight=heavy
RewriteRule /script.php /script.php?weight=heavy [QSA]
...