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