Как я могу перенаправить запрос на основе HTTP Referrer? - PullRequest
0 голосов
/ 04 июня 2019

У меня есть правило перенаправления, которое перенаправляет все документы PDF, Word, Excel и Power Point на страницу.

RewriteEngine on
RewriteRule ^(.*).(pdf|doc|docm|docx|dot|dotm|dotx|odt|csv|dbf|dif|xls|xlsb|xlsm|xlsx|xlt|xltm|xltx|xlw|pot|potm|potx|ppa|ppam|pps|ppsm|ppsx|ppt|pptm|pptx)$ http://myurl.ca/file-download-tracker/?file=$1.$2 [R,L]

На этой странице у меня есть код, который отправляет данные об этом файле в Google Analytics, а затем перенаправляет обратно в файл, к которому пользователь первоначально пытался получить доступ.

Я пытаюсь написать условие для этого правила, которое будет перенаправлять эти файлы, только если пользователь не пришел из http://myurl.ca/file-download-tracker/?file=myfile.pdfURL, но не повезло.Как я мог написать это правило?

Вот самое близкое, я думаю, что я получил с этим условием:

RewriteCond %{HTTP_REFERER} !^http://myurl.ca/file-download-tracker/.*

Ответы [ 2 ]

0 голосов
/ 26 июня 2019

Не удалось решить проблему с кешем браузера в моем предыдущем вопросе.К счастью, я нашел ответ, который решил мою проблему: Отправить событие загрузки файла с сервера в Google Analytics

0 голосов
/ 10 июня 2019

Я выяснил, что условие работает, он может проверить, что реферер идет со страницы "file-download-tracker".

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^[^?]+\?([^&]*&)*file-download-tracker(.*)file=(.*)(&.*)?$
RewriteRule ^(.*).(pdf|doc|docm|docx|dot|dotm|dotx|odt|csv|dbf|dif|xls|xlsb|xlsm|xlsx|xlt|xltm|xltx|xlw|pot|potm|potx|ppa|ppam|pps|ppsm|ppsx|ppt|pptm|pptx)$ http://my-url.ca/file-download-tracker/?file=$1.$2 [L,NC,R=302,E=nocache:1]

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...