2016-09-22 3 views
0

Я пытаюсь перенаправить:.htaccess перенаправления не-WWW и без HTTP к HTTPS: // WWW

  • http://example.extension
  • https://example.extension
  • http://www.example.extension

в

  • https://www.example.extension

с помощью:

RewriteCond %{HTTP_HOST} ^example.extension$ [OR] 
RewriteCond %{HTTPS_HOST} ^example.extension$ [OR] 
RewriteCond %{HTTP_HOST} ^www.example.extension$ [NC] 
RewriteRule (.*) https://www.example.extension$1 [R=301,L] 

http://example.extension перенаправляется https://www.example.extension, однако, я получаю сообщение об ошибке:

The page isn’t redirecting properly

От this answer, если я меняю .htaccess правила:

RewriteCond %{HTTPS} off [OR] 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteRule^https://www.example.extension%{REQUEST_URI} [R=301,L,NE] 

происходит тот же самый симптом, даже после очистки кеша браузера.

Кроме того, у меня есть некоторые поддоменов я не хочу, чтобы перенаправить на WWW, как:

мне нужно http://*.example.extension перенаправлены https://*.example.extension

Кроме правил перезаписи, я запрашиваю справку, единственный другой контент в .htaccess Работает на Wordpress:

# BEGIN WordPress 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 

# add a trailing slash to /wp-admin 
RewriteRule ^wp-admin$ wp-admin/ [R=301,L] 

RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule^- [L] 
RewriteRule ^(wp-(content|admin|includes).*) $1 [L] 
RewriteRule ^(.*\.php)$ $1 [L] 
RewriteRule . index.php [L] 
# END WordPress 

# BEGIN MainWP 
# END MainWP 

Помогите оценить.

ответ

1

С CloudFlare, Вы должны использовать CloudFlare страницу Правила: https://support.cloudflare.com/hc/en-us/articles/200170536-How-do-I-redirect-all-visitors-to-HTTPS-SSL-

Но вы можете использовать:

RewriteEngine On 

#main domain 
RewriteCond %{HTTP_HOST} !^www\. [NC,OR] 
RewriteCond %{HTTP:CF-Visitor} '"scheme":"http"' 
RewriteCond %{HTTP_HOST} ^(?:www\.)?(example\.extension)$ [NC] 
RewriteRule^https://www.%1%{REQUEST_URI} [R=301,L,NE] 

#sub-domains 
RewriteCond %{HTTP:CF-Visitor} '"scheme":"http"' 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE] 
+0

Привет, Круаз. Учитываются ли эти правила в отношении поддоменов, которые у меня есть? Я добавил эти правила, заменив существующие правила, и Firefox говорит: «Firefox обнаружил, что сервер перенаправляет запрос на этот адрес таким образом, который никогда не будет завершен». Я добавил параметр правила страницы Cloudflare 'http: // *. Example.extension/*', чтобы всегда использовать 'https', и я думаю, что это работает нормально. – Steve

+0

Я редактировал свой код с изменением вопроса поддомена. – Croises

+0

Вы можете выполнять всю работу с правилами CloudFlare, но избегайте перенаправления после прокси-сервера CloudFlare в неправильный домен. – Croises

2

Нет переменной под названием HTTPS_HOST.

Заменить правило с этим правилом:

RewriteEngine On 

# main domain: add www and turn on https in same rule 
RewriteCond %{HTTP_HOST} !^www\. [NC,OR] 
RewriteCond %{HTTPS} off 
RewriteCond %{HTTP_HOST} ^(?:www\.)?(example\.extension)$ [NC] 
RewriteRule^https://www.%1%{REQUEST_URI} [R=301,L,NE] 

# sub domain 
RewriteCond %{HTTPS} off 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE] 

Убедитесь, что полностью очистить кэш браузера.

+0

Спасибо. Я заменил правила '.htaccess' выше, и тот же самый симптом происходит даже после очистки кеша браузера и CDN (Cloud Flare). – Steve

+0

Я забыл добавить, что у меня есть некоторые поддомены, которые нужно перенаправить с 'http' на' https' (т.е. мне нужно 'http: // *. Example.extension' перенаправлено на' https: //*.example .extension' также). – Steve

+0

Это правило с живого веб-сайта, и оно работает.Я добавляю отдельное правило для субдоменов, но сначала проверяю основной домен и удостоверяюсь, что во время тестирования нет другого правила. – anubhava

Смежные вопросы