web-dev-qa-db-fra.com

La redirection HTTPS ne semble pas suivre .htaccess RewriteRule, comment puis-je résoudre ce problème?

Je redirige example.com vers sample.com/?example, afin de pouvoir afficher une fenêtre contextuelle modale disant, exemple a changé de nom et devient exemple.

Cela fonctionne bien pour les redirections HTTP à partir de http://example.com, et presque tout fonctionne pour les redirections HTTPS à partir de https://example.com, à l'exception de ces deux choses (s'appliquant uniquement aux redirections à partir de https://example.com):

  1. Dans la barre d'adresse, il sera toujours dit https://example.com, mais affichera la page pour https://sample.com. Chaque fois qu'un lien est cliqué sur cette page, le problème est résolu et il indique ensuite https://sample.com dans la barre d'adresse.

  2. La requête que j'ajoute ne sera pas conservée (?example=1).

Voici mes . Htaccess règles:

RewriteCond %{HTTPS} ^example.com$ [OR]
RewriteCond %{HTTPS} ^www.example.com$
RewriteRule (.*)$ https://www.sample.com/$1?example=1 [R=301,L]

Comment puis-je résoudre ces problèmes afin que lorsque je vais à https://example.com, il passe à https://sample.com?example=1

2
lawdawg

Vous devez avoir plus de directives dans votre .htaccess pour pouvoir effectuer la redirection HTTP et HTTPS complète. Donc, combler les lacunes ...

Par souci de simplicité, j'ai supposé que vous n'aviez pas d'autres sous-domaines (à l'exception de www). Donc, vous redirigez tout en example.com en www.sample.com.

# Redirect http://example to http://sample
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_Host} example\.com
RewriteRule (.*) http://www.sample.com/$1?example=1 [R=301,L]

# Redirect https://example to https://sample
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_Host} example\.com
RewriteRule (.*) https://www.sample.com/$1?example=1 [R=301,L]

%{HTTPS} est toujours défini (que SSL soit activé ou non) et contient simplement la valeur "on" ou "off".

Le $ final (marqueur de fin de modèle) sur le modèle RewriteRule n'est pas requis. Et le 2ème argument de RewriteCond (le CondPattern) est une expression régulière (la plupart du temps), de sorte que les points doivent vraiment être échappés, sinon ils ne correspondent à rien.

2
MrWhite