2 votes

rediriger toutes les pages de non www vers www dans htaccess

Je sais qu'il existe de nombreuses informations sur les redirections de domaines non www vers www. Mais mon problème est que je peux gérer la redirection de la page d'accueil, mais pas celle des sous-pages.

Vous pouvez voir l'exemple aquí Ainsi, lorsque j'entre l'url comme ourenglishclass.eu/fill-in-text-5th-6th-grade, la redirection se fait vers le site www.ourenglishclass.eu/index.php.

Je vois qu'il y a probablement d'autres règles de réécriture qui provoquent ce comportement, mais je n'arrive pas à trouver ce que c'est, ni comment le réparer.

Voici les règles qui redirigent vers /index.php

 #
 RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
 #
 # If the requested path and file is not /index.php and the request
 # has not already been internally rewritten to the index.php script
 RewriteCond %{REQUEST_URI} !^/index\.php
 # and the requested path and file doesn't directly match a physical file
 RewriteCond %{REQUEST_FILENAME} !-f
 # and the requested path and file doesn't directly match a physical folder
 RewriteCond %{REQUEST_FILENAME} !-d
 # internally rewrite the request to the index.php script
 RewriteRule .* index.php [L]

J'ai essayé ces règles de redirection de non-www vers www :

  #RewriteCond %{HTTP_HOST} !^www\. [NC]
  #RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

et (c'est parce que je teste aussi avec https)

  # Redirect to www
  RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
  RewriteCond %{HTTPS}s ^on(s)|
  RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

J'espère que quelqu'un pourra m'indiquer la voie à suivre

1voto

anubhava Points 172509

Le problème semble être dû au fait que vous placez une règle de redirection sous la règle du contrôleur frontal qui transmet tout à l'adresse suivante index.php ce qui rend REQUEST_URI igual a /index.php .

Rédigez votre règle comme ceci :

RewriteEngine On

# Redirect to www
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]

#
RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
#
# If the requested path and file is not /index.php and the request
# has not already been internally rewritten to the index.php script
RewriteCond %{REQUEST_URI} !^/index\.php
# and the requested path and file doesn't directly match a physical file
RewriteCond %{REQUEST_FILENAME} !-f
# and the requested path and file doesn't directly match a physical folder
RewriteCond %{REQUEST_FILENAME} !-d
# internally rewrite the request to the index.php script
RewriteRule ^ index.php [L]

Veillez à vider le cache de votre navigateur avant de tester cette modification.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X