215 votes

Redirection de non-www vers www dans .htaccess

J'ai ceci dans mon fichier .htaccess :

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

mais chaque fois que j'accède à un fichier sur ma racine comme http://example.com/robots.txt il sera redirigé vers http://www.example.comrobots.txt/ .

Comment puis-je corriger cela pour qu'il redirige correctement vers http://www.example.com/robots.txt ?

5voto

Al3abMizo Games Points 61

J'ai testé toutes les solutions ci-dessus mais cela ne fonctionne pas pour moi, j'ai essayé d'enlever le http:// et il ne redirige pas, j'ai aussi enlevé le www et il redirige bien, donc je suis confus, surtout que je fais tourner tous mes sites sous https://.

J'ai donc combiné quelques codes et j'ai trouvé une solution parfaite pour les deux sites http:// et https:// et les sites www et non-www.

# HTTPS forced
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
# Redirect to www
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
</IfModule>

J'espère que cela pourra aider quelqu'un :)

3voto

JoyGuru Points 1467

Ajoutez le code suivant dans le fichier .htaccess.

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

Le tutoriel sur la redirection d'URLs peut être consulté ici. Redirection de non-www vers www et de HTTP vers HTTPS à l'aide du fichier .htaccess

3voto

Abhilash Mishra Points 381

Cette configuration a fonctionné pour moi dans bitnami wordpress avec SSL configuré :

Ajouté le suivant sous "RewriteEngine On" dans le fichier /opt/bitnami/apps/wordpress/conf/httpd-app.conf

RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ http%{ENV:protossl}://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteBase /
RewriteCond %{HTTPS} !on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

2voto

Ashish Gondaliya Points 278
RewriteCond %{HTTP_HOST} !^www\.domain\.com [NC]
RewriteRule (.*) http://www.domain.com/$1 [L,R=301]

Cela va rediriger votre domaine qui ne commence pas par WWW. Il ne redirige pas tous vos sous-domaines.

C'est utile.

2voto

Hunter Frazier Points 407

Je pense que la première réponse redirige avec succès les non-www vers les www (ex : mysite.com -> www.mysite.com ), mais ne prend pas en compte les sous-domaines joker, ce qui donne lieu à :

random.mysite.com -> www.random.mysite.com

Voici une solution avec/sans HTTPS

HTTP

RewriteEngine On

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

HTTP/HTTPS

RewriteEngine On

RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ - [env=protocol:https]

RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ - [env=protocol:http]

RewriteCond %{HTTP_HOST} !www.mysite.com$ [NC]
RewriteRule ^(.*)$ %{ENV:protocol}://www.mysite.com/$1 [L,R=301]

*Note : Je n'ai pas testé https parce que je n'ai pas actuellement de certificat à tester, mais si quelqu'un peut vérifier ou optimiser ce que j'ai, ce serait génial.

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