Перенаправление HTTPS с не www на не www

#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]
  

Это приведет к следующим перенаправлениям:

  1. http://example.com/ => https://example.com/
  2. http://www.example.com/ => https://www.example.com/

Перед тестированием убедитесь, что вы очистили кэш браузера.

Комментарии:

1. Нет, все та же проблема. 🙁

2. Кроме того, сохраните предложенное мной правило в качестве самого верхнего правила чуть ниже RewriteEngine строки и очистите кэш вашего браузера.

3. Извините, я обновил исходное сообщение. По-прежнему не работает.

4. Какова ваша версия Apache и могу ли я узнать ваше фактическое доменное имя для тестирования?

5. Поэтому я спрошу хостинговую компанию. Большое вам спасибо