【发布时间】:2019-08-22 21:33:36
【问题描述】:
我有一个 .htaccess 文件,旨在限制对保留文件夹的访问,该文件夹存储我的域所需的 PHP 代码。为简洁起见,我们称这个文件夹为“PHP”,我的域为“example.com”;换句话说,这个文件夹的 URL 是:
https://www.example.com/PHP/
显然,我不希望用户通过此文件夹进行浏览,因此阻止对该文件夹的所有访问似乎是常识。但是有一个警告:文件夹中的一个文件 可以并且将 由我域上的用户访问 --- 索引文件(因为该文件通过 PHP 运行此保留文件夹中的所有其他文件fopen()函数)。
因此,我需要使用 RewriteRule 来阻止此 URL...
https://www.example.com/PHP/someRandomPHPFile.php
...但不是这些网址:
https://www.example.com/PHP/
https://www.example.com/PHP/index.php
目前,我在 PHP 文件夹的 .htaccess 文件中有这个:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^https://%{HTTP_HOST} [NC]
RewriteCond %{HTTP_REFERER} !^http://%{HTTP_HOST}.*$ [NC]
RewriteRule !^(.*)/$ https://%{HTTP_HOST}/PHP/ [L,R=301,NE]
...但这没有正确重定向,因为每次重定向到索引时,它都会给我一个“嗯...无法访问此页面”屏幕(包括表单提交并重定向到时的索引文件它)。我认为问题在于,当通过 URL 访问索引文件时,它也会重定向。但是,由于我对 .htaccess 文件和 RewriteRules 缺乏经验,我不确定如何解决此问题。
我正在尝试将任何以保留文件夹中的文件为目标的 URL --- 索引文件的外部 --- 重定向回索引,因为索引文件已经根深蒂固地检查到处理所有其他文件的非法和/或非标准表单提交访问。
【问题讨论】: