htaccess将类型为的文件重定向到php脚本并传递文件名

htaccess将类型为的文件重定向到php脚本并传递文件名,php,apache,.htaccess,mod-rewrite,redirect,Php,Apache,.htaccess,Mod Rewrite,Redirect,我的网站上有一个子目录,其中包含jpg图像,例如site.com/files/image1.jpg 我想将所有这些重定向到一个php脚本,该脚本将处理文件的传递。我已经测试了各种重写规则,但似乎无法使其正常工作。我几乎有以下工作,但它似乎只有在文件不存在时才起作用,例如,如果我输入site.com/files/asdasdasd.jpg,它将起作用,因为该文件不存在,但image1.jpg存在,并且由于某种原因,图像会立即交付 另外,将.htaccess文件和PHP脚本放在根目录或同一子目录(即

我的网站上有一个子目录,其中包含jpg图像,例如site.com/files/image1.jpg

我想将所有这些重定向到一个php脚本,该脚本将处理文件的传递。我已经测试了各种重写规则,但似乎无法使其正常工作。我几乎有以下工作,但它似乎只有在文件不存在时才起作用,例如,如果我输入site.com/files/asdasdasd.jpg,它将起作用,因为该文件不存在,但image1.jpg存在,并且由于某种原因,图像会立即交付

另外,将.htaccess文件和PHP脚本放在根目录或同一子目录(即“文件”)中是最佳做法吗

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteRule ^files/(.*)$ deliver.php?file=$1 [L]
</IfModule>

重新启动发动机
重写规则^files/(.*)$deliver.php?文件=$1[L]

您的规则很可能没有得到应用。您必须启用重写模块,并且必须授予覆盖权限才能应用规则。所示的
.htaccess
样式文件将仅在
根文件夹中工作,因为它在
文件
文件夹中放置时与请求不匹配。您必须为此修改模式。@arkascha感谢您的帮助,我已经测试过了,它适用于我提到的不存在的文件,例如site.com/files/nofile.jpg将成功重定向。但是,如果文件存在,它似乎直接服务于此,而不是重定向
.htaccess
风格的文件是出了名的容易出错、难以设置、难以调试,而且它们确实会降低服务器的运行速度。只有在你真的没有其他选择的情况下才应该使用它们。这对我来说没有什么意义,对不起,要么规则得到应用,要么没有。这里面没有“有时”。很可能你的规则没有得到应用。您必须启用重写模块,并且必须授予覆盖权限才能应用规则。所示的
.htaccess
样式文件将仅在
根文件夹中工作,因为它在
文件
文件夹中放置时与请求不匹配。您必须为此修改模式。@arkascha感谢您的帮助,我已经测试过了,它适用于我提到的不存在的文件,例如site.com/files/nofile.jpg将成功重定向。但是,如果文件存在,它似乎直接服务于此,而不是重定向
.htaccess
风格的文件是出了名的容易出错、难以设置、难以调试,而且它们确实会降低服务器的运行速度。只有在你真的没有其他选择的情况下才应该使用它们。这对我来说没有什么意义,对不起,要么规则得到应用,要么没有。这里面没有“有时”。