我希望HTACCESS只阻止直接访问特定文件

时间:2014-03-19 22:39:42

标签: php apache .htaccess

我有一个文件,我不希望用户能够自己导航到。但是,如果他们单击一个链接将它们发送到那里,那么该页面可以正常工作。我目前有我的htaccess文件设置如此。

<Files "success.php">
Order Allow,Deny
Deny from all
</Files>

success.php是文件的名称,在success.php的目录中,我在htaccess文件中有以下内容:

RewriteRule /?\.htaccess$ - [F,L]
RewriteRule ^/?admin/paypal/success\.php$ - [F,L]

如果用户指向那里,用户仍然可以访问success.php,因为我知道如果您尝试在那里导航,则会显示403错误。

如果是这样的话会阻止他们被指示,那么我有办法解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

当我在浏览器的位置栏中输入“success.php”的URL并按回车键时,我的浏览器发送了success.php的请求。

当我访问您的网站并点击链接以转到“success.php”时,我的浏览器会发送成功请求。

它完全相同,只是因为我点击了您网站上的链接而不是在我的浏览器中输入它,两者都要求完全相同。因此,当您拒绝访问时,您拒绝所有访问权限。你需要检查的是“Referer”标题,哪些浏览器可以(可选)包含在请求中,让网络服务器知道它来自哪个URL。参考者很容易被伪造或有时被遗忘,因此检查参考者并不是一种保证。

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^https?://example.com/ [NC]
RewriteRule ^admin/paypal/success\.php$ - [F,L]

因此,如果有人在“example.com”网站(例如您的网站)上加载任何页面,然后点击进入success.php页面的链接,那么他们就可以了。来自其他任何地方的任何其他访问都将是403。