gpt4 book ai didi

php - URL 重写为私密访问文件

转载 作者:行者123 更新时间:2023-12-05 02:21:46 25 4
gpt4 key购买 nike

我正在尝试构建一个简单的网站,让用户上传文件,并私下与其他指定用户共享。问题是:我不希望任何人都能够输入文件的 url 才能访问它(这样任何人都可以看到它)。

我决定尝试使用 .htaccess 来阻止直接 url 访问,但是,我不知道如何自己访问该文件。所有上传的文件都将进入名为“restricted”子文件夹

我的 .htaccess" 文件是:

RewriteEngine on
RewriteCond {%QUERY_STRING} !^.*key=SECRET.*$ [NC]
RewriteRule ^restricted/(.*)$ showfile.php?file=$1

我的“showfile.php”文件:

<?php
echo file_get_contents('[...]/restricted/'.$_GET['file'].'?key=SECRET');
?>

但是,当我打开 "restricted/test.txt" 或受限文件夹中的其他文件时,它会成功重定向到 "showfile.php?file=test.txt",但是,我收到一个 php 错误:

Warning: file_get_contents([...]/restricted/test.txt?key=SECRET) [function.file-get-contents]: failed to open stream: No such file or directory in [...]/showfile.php on line 10

看起来即使查询字符串包含 "key=SECRET",它仍在尝试重定向。

我想要的:我希望它在直接 URL 访问时重定向,但我可以通过它重定向到的 php 页面访问它。

最佳答案

如果您想将文件作为 HTTP 资源访问而不是直接访问磁盘(如您的问题),您可以执行以下操作:

.htaccess 中的代码(放置在“nonpublic_test”文件夹中):

RewriteEngine on
RewriteCond %{REQUEST_URI} ^.*/restricted/.*$ [NC]
RewriteCond %{QUERY_STRING} !^.*key=SECRET.*$ [NC]
RewriteRule ^(.*)$ /$1 [R=403,L]

然后在你的 showfile.php 中:

<?php
echo file_get_contents('http://www.domain.name.here/restricted/'.$_GET['file'].'?key=SECRET');
?>

这将阻止对受限文件夹及其内容的任何访问,但仍允许您的 showfile.php 脚本访问该文件夹内的文件并输出它。

关于php - URL 重写为私密访问文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32096818/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com