Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 拒绝来自客户端的脚本,但在本地使用_Php_Apache_Mod Rewrite - Fatal编程技术网

Php 拒绝来自客户端的脚本,但在本地使用

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

我有一个.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/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]