Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将文件夹中的所有访问重定向到PHP文件_Php_.htaccess_Redirect - Fatal编程技术网

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

将文件夹中的所有访问重定向到PHP文件,php,.htaccess,redirect,Php,.htaccess,Redirect,我想做这样的工作 我有一个文件夹/doc/,里面有很多文件。当用户试图访问此文件夹的内容时,我需要进行一些验证,因此我需要将该访问重定向到根文件夹中的download.php文件,并将实际的请求URI传递给php文件。我在htaccess文件中尝试此操作: RewriteEngine On RewriteBase / RewriteCond %{HTTP_REFERER} !^http://(www\.)?example.com/doc.*$ [NC] RewriteRule ^(.*)$ ht

我想做这样的工作

我有一个文件夹/doc/,里面有很多文件。当用户试图访问此文件夹的内容时,我需要进行一些验证,因此我需要将该访问重定向到根文件夹中的download.php文件,并将实际的请求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_重定向错误,重定向的url是:download.php?r=/download.php,在这种情况下,这不是我想要的(download.php?r=/doc/abc/xyz.pdf是正确的)


有人能为我解释一下我做错了什么吗?非常感谢。

您的重写第二行不正确,它将永远继续循环。您需要添加一个文件检查,这样它就不会每次都使用重写条件。所以它只会在指向不存在的文件时使用它 添加以下行

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

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

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

您的重写条件行不正确,它将永远继续循环。您需要添加一个文件检查,这样它就不会每次都使用重写条件。因此,只有当它指向一个不存在的文件时,它才会使用它。添加以下行RewriteCond%{REQUEST_FILENAME}-dHI,谢谢你的回答。假设我想重定向到。谢谢,但是如何重定向/doc/文件夹中的所有url,如/doc/star/file.pdf和/doc/biz/new/file.html?我的答案的第二部分会这样做。您将在下载脚本中获得r=star/file.pdf,您可以从中进行处理。啊,对不起,请删除-f线。我会更新我的答案