htaccess:只允许通过完整的path访问文件,而不是重写的文件

在我的设置中,我有我的CMS驻留在一个子文件夹/子,我重写所有的访问根到这个子文件夹:

## Rewrite www.example.com to the CMS home page: www.example.com/corporate/index.php RewriteRule ^$ sub/index.php [L] ## Let the CMS process paths like www.example.com/corporate/about RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^sub/(.*)$ sub/index.php?q=$1 [L,QSA] ## Search for real CMS files that moved, ## (eg www.example.com/flash/intro.swf to www.example.com/corporate/flash/intro.swf) RewriteCond %{DOCUMENT_ROOT}/sub/$1 -f RewriteRule ^(.*)$ sub/$1 [L] ## Let CMS process all paths that are not real files and directories, like www.example.com/about RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !=/favicon.ico RewriteRule ^(.*)$ sub/index.php?q=$1 [L,QSA] 

所以现在CMS中有一个文件,我希望能够调用的原因,但我不希望这个文件可以从根访问出于安全原因。 所以,

 www.example.com/maintnance 

不应该工作

 www.example.com/sub/maintnance 

应该pipe用。

这可能与.htaccess

这是可能的 – 你只需要为该文件添加一个特殊的规则, 然后进入重写的其余部分。 例如:

 RewriteRule /maintnance$ - [F,L] 

说,如果文件名是“/ maintnance”,不要做一个重写 – 而是给一个403禁止响应,并停止重写。

但这不是很安全。 如果我是你,我会使用某种forms的访问控制,无论是基于IP地址或基于身份validation。