Php 拒绝来自客户端的脚本,但在本地使用
我有一个.htaccess文件-看起来像这样:Php 拒绝来自客户端的脚本,但在本地使用,php,apache,mod-rewrite,Php,Apache,Mod Rewrite,我有一个.htaccess文件-看起来像这样: RewriteEngine On <FilesMatch ^.*\.php.*$> Order allow,deny Deny from all Satisfy All </FilesMatch> RewriteRule ^help$ scripts/help.php [L] #more rewrites here... 重新编写引擎打开 命令允许,拒绝 全盘否定 满足所有 重写规则^help$scripts/h
RewriteEngine On
<FilesMatch ^.*\.php.*$>
Order allow,deny
Deny from all
Satisfy All
</FilesMatch>
RewriteRule ^help$ scripts/help.php [L]
#more rewrites here...
重新编写引擎打开
命令允许,拒绝
全盘否定
满足所有
重写规则^help$scripts/help.php[L]
#这里有更多的重写。。。
我希望能够允许一个URL,比如http://example.com/help
将被重写(按照此处的规则)并由脚本目录中的help.php脚本处理,但同时使用http://example.com/scripts/help.php
。问题是,当我使用这些语句时,两个URL都返回403。我甚至不确定我想做的是否可能
不幸的是,我无法将文件放在根web目录的外部/上方(这就是我提出此问题的原因),也无法访问httpd.conf文件。如果请求
/help
,它会在内部重写为/scripts/help.php
,然后满足
的模式。这就是为什么访问/help
也被禁止的原因
但是,如果直接通过检查以下内容请求访问/scripts/help.php
,则可以使用mod_rewrite来禁止访问:
这里^[A-Z]+\/[^?\]*\.php[/?\]
测试请求的URI路径中是否有.php
(它的前面可能只有?
和空格之外的任何字符),后面是/
(路径段分隔符)、?
(URI查询的指示符)或空格(URI的结尾)
RewriteCond %{THE_REQUEST} ^[A-Z]+\ /[^?\ ]*\.php[/? \]
RewriteRule .*\.php.*$ - [F]