Mod rewrite 使用mod_rewrite启动文件下载后,如何重定向到页面?

Mod rewrite 使用mod_rewrite启动文件下载后,如何重定向到页面?,mod-rewrite,download,Mod Rewrite,Download,正如标题所述。假设一个人从我的数据库访问一个文件。一旦启动文件下载,我希望浏览器再次重定向到数据库目录。以下是我目前掌握的情况: RewriteEngine On Options +FollowSymLinks RewriteRule ^Database(.zip)$ http://domain.com/db/index.html [R=301,L] 但是,我得到一个500错误 如果我太挑剔了,最好忽略链接上的这个函数,比如:&file=something.zip 不管是哪种方式,让第一部分发

正如标题所述。假设一个人从我的数据库访问一个文件。一旦启动文件下载,我希望浏览器再次重定向到数据库目录。以下是我目前掌握的情况:

RewriteEngine On
Options +FollowSymLinks
RewriteRule ^Database(.zip)$ http://domain.com/db/index.html [R=301,L]
但是,我得到一个500错误

如果我太挑剔了,最好忽略链接上的这个函数,比如:&file=something.zip

不管是哪种方式,让第一部分发挥作用都是非常棒的

编辑

这是我最后的收获。干杯

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} .*zip$|.*rar$|.*tar$|.*txt$ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !domain\.com [NC]
RewriteRule ^(.*)$ /dl.php?url=%{REQUEST_FILENAME} [L]

按照您描述的方式重写mod_实际上是不可能的:一旦服务器开始交付发送了200状态码的内容,就无法在没有相应的第二个请求的情况下启动第二个响应


如果要执行此操作,必须在客户端执行:例如,启动针对单独隐藏iframe的下载,如果下载开始,则可以使用window.location更改页面位置

所以,我不能对直接访问的文件做任何事情?那就没有意义了。不,一个请求只能返回一个结果:一旦服务器发送了200,直到您启动另一个请求,您就完成了。不过,我不知道你为什么会拿到500分。该安装程序应在任何数据库请求时重定向到。zip:可能删除捕获组?可能是这样。那么,既然不可行,那么有没有办法在数据库中找到的任何文件上方应用带有CGI或其他内容的横幅,而不是使用htaccess?我只是想从所有的带宽中获益。不过,谢谢你迄今为止的建议!您可以重定向到另一个包含下载链接的页面:如果您查看重写中可以使用的变量之一,则第二个变量是HTTP\u REFERER。因此,你检查了推荐人,如果不是从你的网站,你会重定向到一个覆盖着广告的登陆页面,上面有一个小的下载链接。当他们点击时,推荐人就是你的网站,你就让他们走了。哈哈!我喜欢你的风格!所以,如果它是不同的引用,我可以重定向,如果它是数据库中的一个文件,我可以在tangent中使用它们?我想如果是这样的话,那么我必须想出一种方法,让索引器为每个文件显示一个下载页面。