В настоящее время я размещаю сайт на сервере Linux без доступа к корневой системе.Я могу изменять только файлы .htaccess в своей выделенной директории.
Фон
В основном мне необходимо использовать AuthType CAS
в моем приложении.Запрос на файл, защищенный этим, будет перенаправлен на сервер аутентификации чужого домена, а затем обратно на сайт, если вход был успешным. История моей проблемы в том, что мне нужно было иметь дело с CORS при запросе ресурсов в Chrome.
- Я размещаю на
app.x.com
. - Сервер аутентификации включен
cas.x.com
- Запрос
app.x.com/resource
перенаправляется на cas.x.com/cas/login_service?http%3a%2f%2fapp.x.com%2fresource
, а затем обратно.
Не удается загрузить шрифтыНапример, шрифт Awesome в Chrome, потому что запрошенный URL-адрес находится на cas.x.com
, где у меня нет контроля, и у него нет заголовка, разрешающего мой домен в качестве источника.(TBH, я не понимаю, почему браузеры реализованы таким образом, потому что CSS загружался нормально из моего домена, но шрифты, загруженные из CSS, стали запросами к серверу CAS, но я отвлекся.)
Итак, я хотел пройти аутентификацию только для файла index.php
Laravel.При наличии следующего файла .htaccess:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
<FilesMatch "index.php">
AuthType CAS
CASAuthNHeader On
Require valid-user
</FilesMatch>
Но затем перенаправление показывает ошибку, и этот подход не выполняется из-за неправильного перенаправления:
Это показывает 404, потому что у меня нет этого пути, проложенного в Laravel.
Без раздела FilesMatch
перенаправление будет выглядеть следующим образом: http://cas.x.com/cas/login_service?http%3a%2f%2fapp.x.com%2finternal%2fmarketplace
Как применить Auth только к index.php
или применить ко всему сайту, но исключая каталоги и файлывнутри public/
?