web-dev-qa-db-fra.com

302 redirection au lieu de 301 après passage en HTTPS

La semaine dernière, j'ai changé mon site Web de HTTP à HTTPS.

Malgré la règle de redirection 301 dans .htaccess, toutes les anciennes pages (HTTP) sont redirigées avec une redirection 302 pour une raison quelconque. Je ne trouve pas ce que c'est et je n'ai changé aucun plugin. La seule chose que j'ai créée était une règle supplémentaire dans .htaccess. Site Web url = https://www.janjippe.nl/

Voici un aperçu de mon fichier .htaccess:

#BEGIN Wordpress
<IfModule mod_rewrite.c> 
RewriteEngine On 

RewriteCond %{HTTPS} !=on
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(.*)$ https://%{HTTP_Host}%{REQUEST_URI} [R=301,L]

RewriteBase /

RewriteRule ^index\.php$ – [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L] </IfModule> 
# END WordPress

Cependant, actuellement, je ne vois que 302 redirections lors de la vérification de toutes les pages. Comment puis-je m'assurer qu'une redirection 301 sera en place au lieu d'une redirection 302?

Ceci est important pour le dossier private_html.

Le dossier public_html est vide, à l'exception d'un fichier .htaccess contenant le contenu suivant:

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.janjippe.nl/$1 [R,L]

<IfModule mod_headers.c>
  Header set Strict-Transport-Security "max-age=31536000"
</IfModule>

# BEGIN WpFastestCache
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

AddDefaultCharset UTF-8

RewriteCond %{HTTP_Host} ^janjippe.nl
RewriteRule ^(.*)$ http\:\/\/www\.janjippe\.nl\/$1 [R=301,L]

RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{QUERY_STRING} !.*=.*
RewriteCond %{HTTP:X-Wap-Profile} !^[a-z0-9\"]+ [NC]
RewriteCond %{HTTP:Profile} !^[a-z0-9\"]+ [NC]
RewriteCond %{DOCUMENT_ROOT}/wp-content/cache/all/$1/index.html -f [or]
RewriteCond /home/janjikm99/domains/janjippe.nl/public_html/wp-content/cache/all/$1/index.html -f
RewriteRule ^(.*) "/wp-content/cache/all/$1/index.html" [L]
</IfModule>

<FilesMatch "\.(html|htm)$">
  FileETag None

  <ifModule mod_headers.c>
  Header unset ETag
  Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
  Header set Pragma "no-cache"
  Header set Expires "Mon, 29 Oct 1923 20:30:00 GMT"
  </ifModule>
</FilesMatch>

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
2
Marc
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.janjippe.nl/$1 [R,L]

Votre "ancien" fichier .htaccess à /public_html/.htaccess semble avoir la redirection suspecte 302. Sans un code d'état explicite, l'indicateur R est défini par défaut sur 302.

Si le site entier a été déplacé vers le dossier /private_html dans le cadre de la mise en œuvre de SSL, il semblerait que HTTP (port 80) soit servi à partir de /public_html et HTTPS (port 443) à partir de /private_html! (Un peu d'une configuration étrange car cela vous permettrait de (par accident) servir un contenu différent pour chacun - ce qui serait une mauvaise idée.)

Si tel est le cas, vous pouvez probablement changer l'ancien fichier /public_html/.htaccess pour lire simplement:

Redirect 301 / https://www.example.com/

Et potentiellement supprimez la redirection HTTP vers HTTPS dans le fichier /private_html/.htaccess, car ce nouveau site (en /private_html) semblerait être accessible uniquement via HTTPS de toute façon! Cependant, il serait peut-être préférable de garder cette redirection en place "au cas où" la configuration serait modifiée.

(Remarque: il peut être plus facile de commencer par tester les redirections 302 temporaires, car celles-ci ne sont pas mises en cache. Si une redirection erronée est mise en cache, le débogage peut prêter à confusion.)

1
MrWhite