Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.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
Apache htaccess:仅当满足规则时才允许访问_Apache_.htaccess_Url Rewriting - Fatal编程技术网

Apache htaccess:仅当满足规则时才允许访问

Apache htaccess:仅当满足规则时才允许访问,apache,.htaccess,url-rewriting,Apache,.htaccess,Url Rewriting,我用一些重写规则完成了这个htaccess文件,但问题是,我能够访问服务器上的单个.php文件,也可以直接访问domain.com/admin/change_profile.php等部分 这正常吗?我以为这不应该发生。我该如何处理这个htaccess文件,以便只有满足了一个规则,它才会将我带到那个文件夹?简而言之:禁止直接访问domain.com/admin/change_profile.php或domain.com/admin/或其他任何内容 RewriteEngine on RewriteR

我用一些重写规则完成了这个htaccess文件,但问题是,我能够访问服务器上的单个.php文件,也可以直接访问domain.com/admin/change_profile.php等部分

这正常吗?我以为这不应该发生。我该如何处理这个htaccess文件,以便只有满足了一个规则,它才会将我带到那个文件夹?简而言之:禁止直接访问domain.com/admin/change_profile.php或domain.com/admin/或其他任何内容

RewriteEngine on
RewriteRule ^/?(us|uk|eu)/?$ test.php [NC,L] #Country
RewriteRule ^/?(us|uk|eu)/(profile)/([a-zA-z0-9]+)/?$ test.php [NC,L] #Country - Profile
在这里:

因为它不属于(美国|英国|欧盟)规则的一部分,所以不应该起作用。注意:它是htdocs中包含php文件的文件夹。这是如何发生的,以及如何克服它

这正常吗?我以为这不应该发生

是的,这是正常的,这是Web服务器所做的。您拥有的所有规则都与URI
/admin/change\u profile.php
不匹配,因此没有任何规则适用,Web服务器执行它应该执行的操作:为请求的资源提供服务。如果不希望访问某些内容,可以执行以下操作之一:

  • 从文档根目录中删除目录(或将其移出文档根目录)
  • 在不希望通过以下方式访问的目录中添加htaccess文件:

    Order allow,deny
    Deny from all
    
  • 添加其他规则以重写您不希望在文档根目录的htaccess文件中访问的目录:

    RewriteRule ^/?admin test.php [NC,L]
    
  • 将所有内容直接发送到test.php:

    RewriteRule ^ test.php [L]
    

您目前使用的规则是什么?你能发布你的htaccess文件吗?@JonLin我已经添加了一些我正在使用的规则。好的。我想它只会符合规则,而忽略其他一切。
RewriteRule ^ test.php [L]