如何基于HTTP Referrer重定向请求?

时间:2019-06-04 17:39:06

标签: apache .htaccess redirect

我有一个重定向规则,可将所有PDF,Word,Excel和Powerpoint文档重定向到页面。

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.pdf网址但没有运气的情况下重定向这些文件。我怎么写这个规则?

这是我认为与这种情况最接近的地方:

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

2 个答案:

答案 0 :(得分:0)

我发现一个可行的条件,它能够检查引荐来源来自“ 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]

现在,我正在与浏览器缓存进行斗争。重定向到此页面后,浏览器将缓存该重定向,因此当我尝试返回到用户单击的原始文件时,浏览器会将我带回到我的重定向页面。所以现在就陷入了循环...

答案 1 :(得分:0)

我之前的问题无法解决浏览器缓存问题。幸运的是,这个答案解决了我的问题:Send file download event from server to Google Analytics