2011-01-28 11 views
2

Проблемы, связанные с подписками Paypal, содержали старый домен https://example.com в профиле подписки PayPal и не могут быть изменены без отмены и повторной подписки..htaccess разрешить https non www, force www только на http:

что я на месте в момент заставляет все, чтобы http://www.example.com так http(s)://example.com 301 ->http://www.example.com

Это то, что я в настоящее время.

PayPal пытается представить некоторые подписки на https://example.com/payments/ipn.php он делает 301 редирект на HTTPS для http://www.example.com, но вы потеряете данные POST на 301 редирект ...

С ниже код, https://www.example.com работает, но так как мне нужно https://example.com для Paypal, чтобы работать, я не знаю, как разрешить NONE WWW на домен HTTPS без него перенаправляется на HTTP хоста (http://www.example.com)

Я добавил robots.txt переназначение, чтобы запретить/по протоколу HTTPS, это работает, поскольку я не хочу дублировать сайт в Google.

Я надеюсь, что все это имеет смысл.

RewriteCond %{HTTP_HOST} ^domain\.com 
RewriteCond %{REQUEST_URI} !^(/payments) 
RewriteRule^http://www.domain.com%{REQUEST_URI} [L,R=301] 

RewriteCond %{SERVER_PORT} ^443$ 
RewriteRule ^robots\.txt$ robots_ssl.txt [L] 

ЗДЕСЬ ИСПРАВЛЕННЫЙ .htaccess для всех, кто заинтересован!

RewriteCond %{HTTPS} !=on 
    RewriteCond %{HTTP_HOST} ^domain\.com 
    RewriteRule^http://www.domain.com%{REQUEST_URI} [L,R=301] 

    RewriteCond %{SERVER_PORT} ^443$ 
    RewriteRule ^robots\.txt$ robots_ssl.txt [L] 
    RewriteRule %{HTTPS_HOST} ^domain\.com%{REQUEST_URI} 
+0

Я не уверен, что вы подразумеваете под «none www в домене HTTPS» – ordnungswidrig

+1

Можете ли вы рассказать нам, почему вы хотите использовать необеспеченный протокол? – ordnungswidrig

+0

HTTP RFC говорит: «Если код статуса 301 получен в ответ на запрос, отличный от GET или HEAD, пользовательский агент НЕ ДОЛЖЕН автоматически перенаправлять запрос». В целом ответ с 301 на запрос POST требует проблем. – ordnungswidrig

ответ

2

Для фильтрации HTTPS можно использовать следующую RewriteCond:

RewriteCond %{HTTPS} !=on # if it's not HTTPS 
RewriteCond %{HTTP_HOST} ^domain\.com 
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301] 

Или вы могли бы избежать редирект, когда это запрос POST, так что данные POST обыкновение теряться:

RewriteCond %{REQUEST_METHOD} !=POST # if it's not POST 
RewriteCond %{HTTP_HOST} ^domain\.com 
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301] 
+0

Hi Floern! Я дам этот снимок и отчитаюсь, спасибо за «Ответ» на вопрос :-) – Supah12

+0

RewriteCond% {HTTPS}! = On RewriteCond% {HTTP_HOST}^domain \ .com RewriteRule^http: // www. domain.me% {REQUEST_URI} [L, R = 301] RewriteCond% {SERVER_PORT}^443 $ RewriteRule^роботы \ .txt $ robots_ssl.txt [L] RewriteRule% {HTTPS_HOST}^домен \ .com% {REQUEST_URI} – Supah12

+0

Argh! выше, это то, что я использовал ... Я добавлю его в TOP-часть, поэтому он правильно отформатирован – Supah12

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