#apache #.htaccess
#apache #.htaccess
Вопрос:
У меня есть домен, не относящийся к WWW, и когда я пытаюсь настроить перенаправление на HTTPS, перенаправление с http://www.examle.com чтобы https://www.example.com работает для меня, но http://example.com не работает на https://example.com . Текущий htaccess:
RewriteEngine On
RewriteCond %{REQUEST_URI} .*index.html/?$ [NC]
RewriteRule ^(.*)index.html/?$ https://$1 [R=301,L,NC]
RewriteCond %{HTTP_HOST} ^www. [NC]
RewriteCond %{HTTP_HOST} ^(?:www.)?(. )$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,NE,R=301]
RewriteCond $1 !index.php
RewriteCond $1 !^assets
RewriteCond $1 !^robots.txt
RewriteCond $1 !^sitemap.xml
RewriteRule ^(.*)$ index.php [L]
Можете ли вы посоветовать, что я делаю неправильно? Спасибо
Обновить:
Текущий .htaccess
RewriteEngine On
RewriteCond %{REQUEST_SCHEME} =http
RewriteCond %{HTTP_HOST} ^(?:www.)?(. )$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,NE,R=301]
RewriteCond %{REQUEST_URI} .*index.html/?$ [NC]
RewriteRule ^(.*)index.html/?$ https://$1 [R=301,L,NC]
RewriteCond $1 !index.php
RewriteCond $1 !^assets
RewriteCond $1 !^robots.txt
RewriteCond $1 !^sitemap.xml
RewriteRule ^(.*)$ index.php [L]
Ответ №1:
Вы используете это правило для https
перенаправления:
RewriteCond %{HTTP_HOST} ^www. [NC]
RewriteCond %{HTTP_HOST} ^(?:www.)?(. )$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,NE,R=301]
Это имеет первое условие, поскольку %{HTTP_HOST} ^www.
это означает, что оно будет соответствовать только именам хостов, начинающимся с www.
, таким образом, вы не получите перенаправление http://example.com/
.
Вместо этого вы можете использовать это правило перенаправления:
RewriteCond %{HTTPS} !on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,NE,R=301]
Это приведет к следующим перенаправлениям:
http://example.com/ => https://example.com/
http://www.example.com/ => https://www.example.com/
Перед тестированием убедитесь, что вы очистили кэш браузера.
Комментарии:
1. Нет, все та же проблема. 🙁
2. Кроме того, сохраните предложенное мной правило в качестве самого верхнего правила чуть ниже
RewriteEngine
строки и очистите кэш вашего браузера.3. Извините, я обновил исходное сообщение. По-прежнему не работает.
4. Какова ваша версия Apache и могу ли я узнать ваше фактическое доменное имя для тестирования?
5. Поэтому я спрошу хостинговую компанию. Большое вам спасибо