Ubuntu .htaccess не работает

Я настраиваю сервер Ubuntu с помощью этой команды.

sudo a2enmod rewrite
sudo a2ensite 000-default.conf

Я редактирую 000-default.conf следующим образом.

<Directory /var/www/html>
        Options FollowSymLinks
        AllowOverride all
        Require all granted
</Directory>

sudo service apache2 restart

Я использую let encrypt для создания ssl. Если я открою myweb.com, он будет перенаправлен на https: //myweb.com. Но если я открою http: //myweb.com, он покажет страницу apache, не перенаправленную на https: //myweb.com. Похоже, что.htaccess не запускается.

Это код.htaccess.

RewriteEngine On
RewriteCond %{HTTPS} off

RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Как это исправить?

1 ответ

Я обнаружил одну странную проблему с Apache .htaccess.

Я установил .htaccess файл в открытом доступе htmlкаталог для базовой аутентификации. Я также установил необходимую конфигурацию apache, как указано на многих обучающих сайтах, страницах и т. Д., Поэтому я знаю, что настройка в основном правильная.

Независимо от того, как я настроил apache, я никогда не получал приглашения на аутентификацию.

Поскольку у меня был пароль, хранящийся в родительском каталоге для общедоступного каталога html, мне нужно было включить этот каталог в определение apache.

Вот исходное определение:

<Directory /srv/www/mysite/public_html>
  Options Indexes FollowSymLinks MultiViews
  AllowOverride All
  Require all granted
</Directory>`

Затем я изменил код конфигурации на следующий:

<Directory /srv/www/mysite>
  Options Indexes FollowSymLinks MultiViews
  AllowOverride All
  Require all granted
</Directory>`

Файл паролей хранится в /srv/www/mysite/access/.htpasswd. Согласно первому шаблону конфигурации этот каталог находился за пределами области конфигурации.

При резервном копировании каталога (родительский для общедоступного HTML) каталог "доступа" теперь находится в области видимости. Теперь apache представляет приглашение для входа в систему.

Теперь я нашел ответ.

RewriteCond %{HTTPS} off не работает, его нужно заменить на RewriteCond %{HTTPS} !on

Другие вопросы по тегам