将文件夹中的所有访问重定向到PHP文件

时间:2016-05-18 20:20:59

标签: php .htaccess redirect

我想做这样的任务。

我有一个文件夹/ doc /里面有很多文件文件。当用户尝试访问此文件夹的内容时,我需要进行一些验证,因此我需要将该访问权限重定向到根文件夹中的download.php文件,并将实际的REQUEST_URI传递给PHP文件。我在htaccess文件中尝试这个:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example.com/doc.*$ [NC]
RewriteRule ^(.*)$ http://example.com/download.php?r=%{REQUEST_URI} [L,R=301]

但我得到ERR_TOO_MANY_REDIRECTS错误,重定向的网址是:download.php?r = / download.php,在这种情况下不是我想要的(download.php?r = / doc / abc / xyz.pdf是正确的一个)

有人可以向我解释我做错了什么吗?非常感谢你。

1 个答案:

答案 0 :(得分:0)

您的重写行不正确,它将继续循环播放。您需要添加文件检查,以便每次都不使用重写条件。所以只有当它指向一个不存在的文件时才会使用它 添加以下行

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^doc\/(.*)\.html$ download.php?r=$1 [L,R=301]

使用网址http://example.com/doc/file.html

它会将用户重定向到download.php?r = file如果要捕获文件扩展名,请将最后一行更改为

RewriteRule ^doc\/(.*)$ download.php?r=$1 [L,R=301]