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