2012-07-30 66 views
0

我有以下htaccess代码以阻止所有.php文件。php - htaccess阻止除根文件以外的php文件

RewriteCond %{THE_REQUEST} ^[A-Z]+\ /[^?\ ]*\.php[/?\ ] 
RewriteRule .*\.php$ 404.php [L] 

但我怎么能阻止只有文件不在根。

例如

mywebsite/index.php - don't want to block 
mywebsite/go/go.php - want to block 
mywebsite/en/en.php - want to block 
+4

不要这样做。将“不接触”文件放在文档根目录之外的某处。 PHP不会关心他们在哪里,只要他们可以通过include_path搜索或直接路径规范 – 2012-07-30 16:25:58

+0

大声笑....我得到同样的问题,我能赶上包括文件.... – 2012-07-30 16:35:20

回答

0

不知道如何不循环,但你想改变你匹配的正则表达式包含在你的路径至少1深度:

RewriteCond %{THE_REQUEST} ^[A-Z]+\ /[^?\ ]*\.php[/?\ ] 
RewriteRule ^[^/]+/.*\.php$ 404.php [L] 

此外,请参阅马克B的评论。