2011-01-28 5 views
2

Avoir des problèmes avec les abonnements Paypal ont tenu l'ancien domaine https://example.com dans le profil d'abonnement paypal et ne peut pas être changé sans annuler et réabonnement..htaccess autoriser https non www, force www sur http seulement

ce que j'ai en place au moment oblige tout à http://www.example.com si http(s)://example.com 301 ->http://www.example.com

C'est ce que j'ai actuellement.

paypal tente de soumettre des abonnements à https://example.com/payments/ipn.php il a été fait une redirection 301 sur https http://www.example.com mais vous perdez les données POST sur une redirection 301 ...

Avec le code ci-dessous, https://www.example.com œuvres, mais depuis j'ai besoin pour https://example.com Paypal pour travailler, je ne suis pas sûr de savoir comment permettre au www aucun sur le domaine HTTPS sans qu'il rediriger vers l'hôte HTTP (http://www.example.com)

J'ai ajouté la redirection robots.txt pour désavouer/sur https, Cela fonctionne car je ne veux pas de site en double sur google.

J'espère que tout cela a du sens.

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] 

VOICI LE FICHIER .htaccess pour tous ceux qui sont intéressés!

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

Je ne suis pas sûr de ce que vous entendez par "aucun www sur le domaine HTTPS" – ordnungswidrig

+1

Pouvez-vous nous dire pourquoi vous voulez utiliser le protocole non sécurisé? – ordnungswidrig

+0

La RFC HTTP indique "Si le code d'état 301 est reçu en réponse à une demande autre que GET ou HEAD, l'agent utilisateur NE DOIT PAS rediriger automatiquement la demande". En général, répondre à 301 à une demande POST demande des problèmes. – ordnungswidrig

Répondre

2

Pour filtrer HTTPS, vous pouvez utiliser RewriteCond suivant:

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

Ou vous pourriez éviter une redirection, quand il est une requête POST, de sorte que les données POST être perdu l'habitude:

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

Salut Floern! Je vais donner un coup de feu et de rendre compte, merci de "Répondre" à la question :-) – Supah12

+0

RewriteCond% {HTTPS}! = Sur RewriteCond% {HTTP_HOST}^domaine \ .com RewriteRule^http: // www. domain.me% {REQUEST_URI} [L, R = 301] RewriteCond% {SERVER_PORT}^443 $ RewriteRule^robots \ txt $ robots_ssl.txt [L] RewriteRule% {^} HTTPS_HOST domaine \ .com% {REQUEST_URI} – Supah12

+0

Argh! ci-dessus est ce que j'ai utilisé ... Je vais l'ajouter à la partie supérieure de sorte qu'il est formaté correctement – Supah12