Как я могу добавить HTTP_REFERER к строке запроса, используя htaccess? - PullRequest
0 голосов
/ 15 июля 2009

В моем файле .htaccess у меня есть следующий набор правил:

RewriteRule ^dir/page1$ /bleh/docs/?id=12 [L,QSA]
RewriteRule ^dir/page2$ /bleh/docs/?id=13 [L,QSA]
RewriteRule ^dir/page3$ /bleh/docs/?id=14 [L,QSA]

Иногда к одному из этих правил можно получить доступ через редирект с другого сайта (реферера). Я хотел бы иметь возможность добавить ссылку на строку запроса следующим образом:

RewriteRule ^dir/page2$ /bleh/docs/?id=13&ref=%{HTTP_REFERER} [L,QSA]

Однако, похоже, это не работает.

Что я делаю не так?

Ответы [ 3 ]

3 голосов
/ 15 июля 2009

Если вы пишете это HTTP_REFERER (это неясно из-за изменений), вы делаете это правильно. Если это не работает в тот момент, это потому, что реферер не предоставляется. (Для этого есть любое количество причин; поставка осуществляется по усмотрению браузера.)

1 голос
/ 15 июля 2009

В переменной для реферера используется общая ошибка: HTTP_REFERER. См. этот шпаргалка для некоторых других имен переменных.

Насколько я знаю, переписанный URL не удалит оригинальный заголовок Referer, поэтому вы все равно сможете извлечь его из кода, не передавая его в качестве параметра строки запроса (при условии, что он дает вам доступ к переменным HTTP.)

0 голосов
/ 01 ноября 2010

Проверенный метод, который работает для меня и передает рефереру через редирект 301. https://webmasters.stackexchange.com/questions/4665/

...