Apache mod_rewrite redirige vers http avec 302 au lieu de https

Dans apache 2.2 j’utilise mod_rewrite et j’ai une règle de réécriture comme –

RewriteCond %{REQUEST_URI} ^/?mysite/? RewriteRule (.*)mysite/(.*) $1$2 [R=301,L] 

Cela réécrit cette URL –

 https://www.domain.com/mysite/about/ 

à

 https://www.domain.com/about/ 

La règle semble fonctionner. Mais quand je vois la trace du réseau dans les outils de développement chrome ou httpwatch, je peux voir les redirections avec le protocole http avec 302. La trace est ci-dessous (j’ai supprimé les timings de trace et copié uniquement les redirections)

 GET 301 Redirect to http://www.domain.com/about https://www.domain.com/mysite/about GET 302 Redirect to https://www.domain.com/about http://www.domain.com/about GET 302 Redirect to http://www.domain.com/about/ https://www.domain.com/about GET 302 Redirect to https://www.domain.com/about/ http://www.domain.com/about/ GET 200 html https://www.domain.com/about/ 

Je voudrais éviter les redirections 302 vers http: // …… et juste avoir une redirection 301 selon ma règle de réécriture. Y a-t-il un moyen de faire cela ?

La première redirection (celle dont vous parlez) fonctionne comme prévu et envoie l’utilisateur à la nouvelle page avec un 301. Cependant, il semble que le système que vous utilisez force un ‘/’ à la fin de l’URI et effectue une autre redirection à cause de ça.

Peut-être que quelque chose comme ça fonctionnerait mieux:

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

Pourtant, votre trace affiche 4 redirections … Je ne suis pas sûr de comprendre pourquoi il y a 2 redirections supplémentaires.