2013-11-23 3 views
2

Пер: https://exp-resso.com/blog/post/2011/08/securing-your-expressionengine-website-with-httpsHtaccess - перенаправление на HTTPS не работает

RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteCond $1 ^(member|account|checkout|system) [NC] 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

Это говорит серверу «Если HTTPS выключен, и запрос начинается с членом или учетной записью или проверкой или системами (не чувствителен к регистру) , перенаправить в https://current-domain/current-page ". Это простой простой способ: блокировать все подпапки/группы шаблонов.

Я добавил это в мой файл Htaccess так:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{HTTPS} off 
    RewriteCond $1 ^(sign-in|sign-up) [NC] 
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 
</IfModule> 

Однако, когда я иду в http://mydomain.com/sign-in, то URL не меняется на https://mydomain.com/sign-in. Любая идея, что не так?

EDIT 1:

Мой Htaccess также имеет следующие (для удаления «WWW») и мне интересно, если они имеют и могут быть причиной проблемы?

RewriteCond %{HTTPS} !=on 
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] 
RewriteRule^http://%1%{REQUEST_URI} [R=301,L] 

EDIT 2:

Процесс ликвидации, оказывается, что это вызывает проблему:

<IfModule mod_rewrite.c> 
     RewriteEngine On 

     # Removes index.php from ExpressionEngine URLs 
     RewriteCond $1 !\.(gif|jpe?g|png)$ [NC] 
     RewriteCond %{REQUEST_FILENAME} !-f 
     RewriteCond %{REQUEST_FILENAME} !-d 
     RewriteRule ^(.*)$ /index.php/$1 [L] 
</IfModule> 

Когда я закомментируйте RewriteRule, на https: // есть силы , Что вызывает конфликт?

+0

Любые причины, почему вы используете '.htaccess' файлы стилей вместо обычной конфигурации? Эти файлы подвержены ошибкам, замедляют работу и трудно отлаживают. – arkascha

ответ

1

Try поставить (знак в | Регистраций) состояние внутри RewriteRule:

RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteRule ^(sign-in|sign-up)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,NC,R=301] 
+0

Это не сработало. – StackOverflowNewbie

+0

@StackOverflowNewbie Вы уверены, что mod_rewrite включен? Работает ли какая-либо переадресация? – user4035

+0

@StackOverflowNewbie Я протестировал его здесь: http://htaccess.madewithlove.be/, и это сработало. – user4035

0

Что относительно этого? (Если порт == 80 затем перенаправить)

RewriteEngine on 
RewriteCond %{SERVER_PORT} 80 
RewriteCond %{REQUEST_URI} member [OR] 
RewriteCond %{REQUEST_URI} account [OR] 
RewriteCond %{REQUEST_URI} checkout [OR] 
RewriteCond %{REQUEST_URI} system 
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] 
+0

Необходим ли 'RewriteEngine On'? Я только что скопировал 'RewriteCond $ 1^(член | account | checkout | system) [NC]' над 'RewriteRule'? – StackOverflowNewbie

+0

Да, должно быть. (Я только что отредактировал мой комментарий) –

+0

Это не сработало – StackOverflowNewbie

0

Сначала убедитесь, что переписывание работает на сервере и что htaccess читается (например, путем перенаправления по каждому URL-адресу).

Затем используйте RewriteCond %{REQUEST_URI} ^/(sign-in|sign-up) вместо RewriteCond $1 ^(sign-in|sign-up) [NC]

Он работает и легче читать тоже

Так вы Htaccess должны выглядеть так

RewriteEngine On 
RewriteCond %{HTTPS} !=on 
RewriteCond %{REQUEST_URI} ^/(sign-in|sign-up) [NC] 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 
Смежные вопросы