Назад | Перейти на главную страницу

Правило перезаписи Apache не работает

Я использую AWS Elastic Load Balancer и настроил следующее правило конвертировать http трафик в https.

/etc/httpd/conf.d/httpd_redirect.conf

    <VirtualHost *:80>
        RewriteEngine On
        RewriteCond %{HTTP:X-Forwarded-Proto} !https
        RewriteCond %{HTTP_USER_AGENT} !^ELB-HealthChecker
        RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
    </VirtualHost>

Однако когда я захожу на свой сайт через его домен (www.thewhozoo.com), Я вижу, что протокол http и нет https.

Есть идеи, почему правило перезаписи не работает?

Спасибо

Больше информации

/etc/httpd/conf/httpd.conf

...
Include conf.d/*.conf
Include conf.d/elasticbeanstalk/*.conf
...

Вышеуказанное создается при развертывании:

.ebextensions/myapp.config

container_commands:
      01_setup_apache:
          command: "cp .ebextensions/enable_mod_deflate.conf /etc/httpd/conf.d/enable_mod_deflate.conf"
files:
  "/etc/httpd/conf.d/httpd_redirect.conf" :
    mode: "000644"
    owner: root
    group: root
    content: |
        <VirtualHost *:80>
            RewriteEngine On
            RewriteCond %{HTTP:X-Forwarded-Proto} !https
            RewriteCond %{HTTP_USER_AGENT} !^ELB-HealthChecker
            RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
        </VirtualHost>

Слушатели ELB

У вас есть фрагмент конфигурации /etc/httpd/conf.d/ssl_rewrite.conf

Обычно такие сниппеты загружаются Include или IncludeOptional директива

Include conf.d/*.conf

или

IncludeOptional conf.d/*.conf

из вашего основного httpd.conf.

Проблема в том, что эти фрагменты применяются только к вашей основной конфигурации и не применяются ни к каким VirtualHost разделы ...

Либо включите эти настройки в определение виртуального хоста, либо загрузите туда этот фрагмент:

<VirtualHost *:80>
   ServerName www.thewhozoo.com
   Include /etc/httpd/conf.d/ssl_rewrite.conf
</VirtualHost>

Или даже лучше, не используйте mod_rewrite и установите:

<VirtualHost *:80>
    ServerName www.thewhozoo.com
    Redirect "/" "https://www.thewhozoo.com/"
</VirtualHost>