2014-09-12 2 views
3

Я искал фрагмент кода, который заставит https://. Я нашел это:Force HTTPS on .htaccess, но только на производстве

RewriteEngine On 
RewriteCond %{HTTPS} !=on 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

Проблема заключается в том, когда я хочу работать на местном так гиперссылка, как «локальный» или «example.dev» он пытается перенаправить https://localhost (она не работает).

Как это решить?

(так, чтобы подвести итог, я хочу выше фрагмент кода, чтобы работать только тогда, когда я использую его на производстве, например, «example.com»)

ответ

8

Я хочу выше фрагмент кода, чтобы работать только тогда, когда я использую его на производстве, например, example.com)

Вы можете ограничить правило только целевой example.com, используя условие перезаписи:

RewriteEngine On 

RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC] 
RewriteCond %{HTTPS} !=on 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [L,NE,R=301] 
+0

будет работать с или без 'www'? Таким образом, либо будет принудительно SSL? – Jordan

+0

Да, это правильно ... – anubhava

1

Это несколько продвинутый, но вы можете попробовать поставить свои серверы в файл под названием servers.txt

RewriteEngine on 
RewriteMap lb rnd:servers.txt 
RewriteRule ^/(.*) http://${lb:servers}/$1 [P,L] 
serverlist.txt will contain a list of the servers: 

## serverlist.txt file con 
servers localhost.example.com|server1.example.com 

выше ответ достаточно хорошо с местными и производства различия в поведении мод переписывания. Я бы выбрал .htaccess в git или subversion (который когда-либо использовал) в этом случае.

Это в основном для балансировки нагрузки, но вы можете применить это в своем механизме.

0

Для Apache введите свои правила в пределах <IfModule mod_ssl.c></IfModule> и отключите модуль ssl на локальном сервере.

<IfModule mod_ssl.c> 
    RewriteEngine On 
    RewriteCond %{HTTPS} !=on 
    RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 
</IfModule> 
Смежные вопросы