2015-10-21 5 views
0

Я изменил отверстие в интернет-магазине https. Поэтому я хочу, чтобы переписать все домены, кроме мобильного подобласти (http://m.my-store.com) в https://www.my-store.comhtaccess переписать для доменов https

#First rewrite any request to the wrong domain to use the correct one (here www.) 
#mobile subdomain shouldn't rewrite 
RewriteCond %{HTTP_HOST} !m\. 
RewriteCond %{HTTP_HOST} !^www\.my-store\.com$ 
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 
#Now, rewrite to HTTPS: 
RewriteCond %{HTTPS} off 
RewriteCond %{HTTP_HOST} !^www\.my-store\.com$ 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

Результат:

http://my-store.com   OK (correct rewrite to https://www.my-store.com) 
http://www.my-store.com  OK (correct rewrite to https://www.my-store.com) 
https://my-store.com  X (stays with https://my-store.com) 
https://www.my-store.com OK (correct rewrite to https://www.my-store.com) 
http://m.my-store.com  OK (correct rewrite to https://www.my-store.com) 
+1

_http: //m.my-store.com ОК (исправить переписать на https://www.my-store.com) '_ <- не так ли? – hjpotter92

+0

извините, копия & pase ошибка. Это должно быть http://m.my-store.com OK (остается с http://m.my-store.com) – Astarot

+0

'https: // my-store.com' остается на одном и том же URL-адресе это то, что вы хотите? – anubhava

ответ

1

Что я хотел бы сделать, это просто проверить домен вместо того, чтобы соответствовать, если www не в запрос. Вместо этого сделайте обратное и просто проверьте базовый домен, и это означает, что нет www, поэтому перенаправление. Вы также можете использовать использование [OR] и это одно правило, и оно позаботится обо всех сценариях.

Вы это правило ниже.

RewriteCond %{HTTP_HOST} ^my-store\.com$ [OR] 
RewriteCond %{HTTPS} off 
RewriteCond %{HTTP_HOST} !^m\. 
RewriteRule ^(.*)$ https://www.my-store.com/$1 [L,R=301] 

Не делайте этого, как это ниже.

Я использовал фактический домен в в RewriteRule выше, так что вы не будете иметь проблемы с переменными, потому что вы используете этот метод с OR. Значение, если у вас есть свои правила, подобные этому.

RewriteCond %{HTTP_HOST} ^my-store\.com$ [OR] 
RewriteCond %{HTTPS} off 
RewriteCond %{HTTP_HOST} !^m\. 
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

И ваш запрос http://www.my-store.com вы будете в конечном итоге с https://www.www.my-store.com Так использовать первое правило я предоставил.

Ваш результат будет применением вышеуказанного правила.

http://my-store.com   (rewrites to https://www.my-store.com) 
http://www.my-store.com  (rewrites to https://www.my-store.com) 
https://my-store.com  (rewrites to https://www.my-store.com) 
https://www.my-store.com (does nothing - https://www.my-store.com) 
http://m.my-store.com  (does nothing - http://m.my-store.com) 
+0

Я использовал ваши правила 'RewriteCond% {HTTP_HOST}^my-store \ .com $ [OR] RewriteCond% {HTTPS} off RewriteCond% {HTTP_HOST}!^M \. RewriteRule^(. *) $ Https://www.my-store.com/$1 [L, R = 301] ', но результат совпадает с моими правилами. Ваш вариант лучше, потому что он имеет меньше строк;) Но 'https: // my-store.com' не перенаправляется на' https: // www.my-store.com' – Astarot

+0

@Astarot и сделал это для вашего ситуация? –

+0

'https://my-store.com (переписывается на https://www.my-store.com)' не работает :( – Astarot

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