У меня есть приложение CakePHP, которое я хочу защитить паролем.Хитрость заключается в том, что все файлы / местоположения должны быть доступны только с паролем, КРОМЕ одного определенного адреса (функция с CakePHP-контроллером)
Адрес выглядит так:
http://example.com/MyApp/MyController/MyFunction?MyParam=MyValue
Все остальные местоположения должны быть доступны только с паролем
http://example.com/MyApp/MyController/MyOtherFunction
http://example.com/MyApp/MyController/MyOtherFunction
http://example.com/MyApp/MyOtherController/MyOtherFunction
Ну, я сначала попробовал это в корне .htaccess
-File, но вся перезапись CakePHP делает его очень трудным, а в .htaccess-Files директива <LocationMatch>
не допускается.Поэтому я попробовал это с <FilesMatch>
, но реальный файл всегда один и тот же: index.php
.mod_rewrite переписывает все адреса в
http://example.com/MyApp/app/webroot/index.php?url=$1
На следующем шаге я попробовал это в apache-конфигурации и поместил туда этот раздел
<LocationMatch ^/MyApp/MyController/MyFunction.*>
AuthType Basic
AuthName "Secure Area"
AuthUserFile /path/to/.htpasswd
Require user MyUser
</LocationMatch>
Хорошо, регулярное выражение совпало, но это был неправильный путь.Он защищает MyFunction, но не остальные.