В моих настройках моя 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,
## (e.g. 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
Должно сработать.
Можно ли это сделать с .htaccess?
Это возможно - вам просто нужно добавить специальное правило для этого файла перед вы перейдете к остальной части перезаписи. Например.:
RewriteRule /maintnance$ - [F,L]
говорит, что если имя файла - "/ maintnance", не перезаписывайте - вместо этого дайте ответ 403 Forbidden и прекратите перезапись.
Но это не очень безопасно. На вашем месте я бы использовал некоторую форму управления доступом, основанную либо на IP-адресе, либо на аутентификации.