Apache2 sites-enabled / deafault.conf перенаправляет неправильно? - PullRequest
0 голосов
/ 03 февраля 2020

У меня есть следующая проблема, связанная с моей конфигурацией apache2: у меня есть этот файл в папке etc/apache2/sites-enabled:

<VirtualHost *:80>
   ServerName example.com
   DocumentRoot /var/www
   Redirect permanent / https://example.com/
</VirtualHost>

<VirtualHost _default_:443>
  ServerName example.com
  DocumentRoot /var/www
  SSLEngine On
 # etc...
</VirtualHost>

Все нормально, если я введу https://example.com/mysite/start.php в браузере. Но если я введу http://example.com/mysite/start.php, я перенаправлюсь на https://example.com/mysite/start.phpmysite/start.php и получу сообщение об ошибке 404. Что мне нужно изменить в файле конфигурации, чтобы предотвратить эту проблему? Спасибо за любую помощь

РЕДАКТИРОВАТЬ: Если я введу http://example.com/mysite/, я буду успешно перенаправлен на https://example.com/mysite/start.php

1 Ответ

0 голосов
/ 04 февраля 2020

Вместо того, чтобы использовать перманент Redirect для достижения https, вы должны использовать правило перезаписи. Замените ваш код следующим:

<VirtualHost *:80>
   ServerName example.com
   DocumentRoot /var/www
   RewriteEngine On
   RewriteCond %{HTTPS} off
   RewriteRule (.*) https://%{SERVER_NAME}/ [R,L]
</VirtualHost>

<VirtualHost _default_:443>
  ServerName example.com
  DocumentRoot /var/www
  SSLEngine On
 # etc...
</VirtualHost>

Здесь мы используем правило перезаписи для активации SSL вашего веб-сайта.

   RewriteEngine On
   RewriteCond %{HTTPS} off
   RewriteRule (.*) https://%{SERVER_NAME}/ [R,L]

И убедитесь, что у вас включен модуль перезаписи apache. Чтобы включить modrewrite, перейдите в каталог модуля apache2 cd /etc/apache2/mods-available, выполните следующую команду a2enmod rewrite.load и перезапустите apache2 service apache2 restart

...