Установите заголовки контроля доступа.htaccess, чтобы они влияли только на один сайт
У меня есть сайт mysite.com, который запрашивает ресурсы у субдомена mautic.mysite.com, на котором работает Mautic. Без заголовков контроля доступа в mautic.htaccess я получаю ошибку 403 для этих ресурсов, с ними я получаю ошибку 500, когда пытаюсь получить доступ к Mautic. Я пытаюсь установить заголовки, только если запрос приходит от mysite.com, но безрезультатно. Вот что я попробовал:
# create variable for http or https
RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ - [env=proto:https]
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ - [env=proto:http]
<If "%{HTTP_REFERER} == %{ENV:proto}://!mautic\.mysite.com/.*">
<IfModule mod_headers.c>
Header add Access-Control-Allow-Origin %{ENV:proto}://mysite.com
Header set Access-Control-Allow-Credentials true
Header set Access-Control-Allow-Headers: Origin, Content-Type, X-Auth-Token
</IfModule>
</If>
С вышеупомянутыми ресурсами нет проблем, но я все еще получаю ошибку 500. Может кто-нибудь сказать, пожалуйста, как это исправить, или есть другой способ сделать это?
ура
ОБНОВЛЕНИЕ: я понял, что проблема была из-за hostgator, использующего apache 2.2, который не поддерживает операторы If. В настоящее время я пытаюсь что-то вроде:
SetEnvIfNoCase Origin %{ENV:proto}://mysite.com ENV_SET
Header add Access-Control-Allow-Origin %{ENV:proto}://mysite.com env=ENV_SET
Тем не менее, это не работает. Если я уберу SetEnvIf, заголовок все еще добавлен.
Я обнаружил, что это означает, что он должен быть размещен в конфигурации, а не в.htaccess, но я не могу понять, что это значит.