用PHP屏蔽看起来像文件名的URL

用PHP屏蔽看起来像文件名的URL,php,.htaccess,url-masking,Php,.htaccess,Url Masking,因为这是第一次有人让我点击一些推荐链接,所以我很好奇。在屏幕截图中,你会看到一个隐藏的url,它直接指向其他网站的某个推荐链接。 引起我注意的有趣的部分和我点击链接的原因是链接有一个文件扩展名,你会注意到的。我能想到PHP重定向、.htaccess重定向,但不能确切地想到文件名屏蔽的解决方案 通常我们可以解析.htaccess中的url,并将.zip扩展名重定向到php文件,以检查该文件是否为有效文件名或数据库中重定向的键值。这也是一个解决方案,但我没有注意到此链接上有任何重定向 还有其他可能

因为这是第一次有人让我点击一些推荐链接,所以我很好奇。在屏幕截图中,你会看到一个隐藏的url,它直接指向其他网站的某个推荐链接。

引起我注意的有趣的部分和我点击链接的原因是链接有一个文件扩展名,你会注意到的。我能想到PHP重定向、.htaccess重定向,但不能确切地想到文件名屏蔽的解决方案

通常我们可以解析.htaccess中的url,并将.zip扩展名重定向到php文件,以检查该文件是否为有效文件名或数据库中重定向的键值。这也是一个解决方案,但我没有注意到此链接上有任何重定向

还有其他可能的方法吗?

使用.htaccess可以重写任何请求。链接看起来像zip文件,但请求被发送到一些php脚本

这个php文件解析请求的URI,做它应该做的事情,增加计数器,发送钱,。。只有在所有这些内容都提供给您文件之后。

使用.htaccess才有可能重写任何请求。链接看起来像zip文件,但请求被发送到一些php脚本


这个php文件解析请求的URI,做它应该做的事情,增加计数器,发送钱,。。只有在所有这些东西都给了您文件之后。

您才能使用.htaccess重定向任何请求。例如:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
将所有请求重定向到index.php,您可以在其中通过查看$SERVER['REQUEST_URI']检查用户是否需要file.zip。然后给他你想要的文件:

$zip = '/path/to/zip/file/outside/the/web/root.zip';

// set correct headers, so the browser identifies the response as a zip file
header('Content-type: application/zip;');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($zip) . ';');
header('Content-Disposition: attachment; filename="whatever.zip";');

// output the file contents
readfile($zip);

您可以使用.htaccess重定向任何请求。例如:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
将所有请求重定向到index.php,您可以在其中通过查看$SERVER['REQUEST_URI']检查用户是否需要file.zip。然后给他你想要的文件:

$zip = '/path/to/zip/file/outside/the/web/root.zip';

// set correct headers, so the browser identifies the response as a zip file
header('Content-type: application/zip;');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($zip) . ';');
header('Content-Disposition: attachment; filename="whatever.zip";');

// output the file contents
readfile($zip);

也许仅仅因为url看起来像是指向一个文件就有帮助,但这并不意味着路径中实际上有一个文件看起来像url中的内容。不需要客户端可见重定向来处理路径信息或内部mod_重写仅内部重定向。可能会有所帮助,只是因为url看起来像指向文件,并不意味着路径中实际有一个文件看起来像url中的文件。不需要客户端可见重定向来处理路径信息或内部mod_rewrite仅内部重定向。对于一个特定的单文件重写规则^download.zip download.php[L,NC],因此如果在浏览器链接www.domain.com/download.zip中打开,它将执行download.php文件中的所有代码是,但现在更常见的是将任何请求重定向到路由器脚本,该脚本决定要执行的函数或要显示的模板,但所有页面中的文件名都会更改,例如RewriteRule^download/+/.+.+.zip download.php?id=$2[L,NC]是否将使用第二个参数执行下载php?同样对于一个特定的单文件重写规则^download.zip download.php[L,NC],因此如果您在浏览器链接www.domain.com/download.zip中打开,它将执行download.php文件中的所有代码是的,但现在更常见的是将任何请求重定向到路由器脚本,这决定了要执行的函数或要显示的模板,但所有页面中的文件名都发生了更改,所以像RewriteRule ^download/+?/.+?.zip download.php?id=$2[L,NC]将使用第二个参数执行下载php?