.htaccess RewriteRule изменить? к &

У меня проблема с отслеживанием посетителей из Adwords. Они не отображаются в аналитике из-за неправильного форматирования URL. Потратил несколько часов, пытаясь отредактировать мой текущий .htaccess, но не нашел решения. Мой текущий .htaccess:

RewriteRule ^$ index.php [NC]
RewriteCond %{REQUEST_FILENAME} !(upload||media|admin|index\.php)
RewriteRule .* template.php?seo_url=$0& [PT,L]

Таким образом, когда посетитель приходит из AdWords, URL-адрес в браузере выглядит так: http://www.example.com/section?gclid=XXXXX URL-адрес на стороне сервера: http://www.example.com?seo_url=section?gclid=XXXXX

Не могли бы вы помочь мне изменить .htaccess, чтобы сделать URL-адрес на стороне сервера, например http://www.example.com?seo_url=section&gclid=XXXXX

Спасибо.


person vinculis    schedule 29.11.2011    source источник


Ответы (2)


На самом деле должно произойти то, что исходная строка запроса должна быть отброшена, и должна остаться только строка запроса RewriteRule. Чтобы избежать этого, используйте флаг QSA. Что-то типа

RewriteRule ^(.*)$ template.php?seo_url=$1 [QSA,PT,L]
person unbeli    schedule 29.11.2011
comment
Спасибо, это помогло. Одной ссылкой вы спасли мне день, а может и больше - person vinculis; 29.11.2011

Попробуйте RewriteRule следующим образом:

RewriteRule .* template.php?seo_url=%{REQUEST_URI}&%{QUERY_STRING} [PT,L]
person morja    schedule 29.11.2011
comment
Верно, но это все еще правильный ответ. Во всяком случае, я добавил ваше возражение. - person morja; 29.11.2011
comment
тем не менее, RewriteRule соответствует только URL-адресу перед запросом - person unbeli; 29.11.2011
comment
Если ты так хорошо это знаешь, почему бы тебе немного не помочь? Будет ли работать RewriteRule .* template.php?seo_url=%{REQUEST_URI}&%{QUERY_STRING}? - person morja; 29.11.2011
comment
Хм, наверное, нет. См. мой ответ, а также http://wiki.apache.org/httpd/RewriteQueryString - person unbeli; 29.11.2011