Interdire example.com et obliger www.example.com

WRInaute occasionnel
Bonjour,

Pour un de mes sites j'avais ce code qui marchait sans problème:
Code:
RewriteCond %{HTTP_HOST} !^www\.exemple\.com [NC]
RewriteRule (.*) http://www.exemple/$1 [QSA,R=301,L]

Maintenant lorsque je tape -http://.exemple.com/ je suis redirigé vers -http://www.exemple/
donc forcément il y a une erreur.

j'ai donc changé le code pour celui-la:
Code:
RewriteCond %{HTTP_HOST} !^www.exemple.com$
RewriteRule ^(.*)   http://www.exemple.com/$1  [QSA,L,R=301]
Avec celui-là cela refonctionne.

D'où ma question. Pourquoi cela ne fonctionne plus avec le premier code alors qu'avec d'autres sites au même endroit cela fonctionne.
 
WRInaute discret
Bonjour,

J'ai lu toute la discussion sans trouver mon bonheur...
Je suis sous OVH en multi-domaine (et non en sous-domaine !)
J'ai essayé :
Code:
Options +FollowSymlinks 
RewriteEngine on 
RewriteCond %{HTTP_HOST} ^lafermeduchevalnnn.com$
RewriteRule ^(.*) h**p://www.lafermeduchevalnnn.com/$1 [QSA,L,R=301]

Et bien d'autres codes, mais rien à faire je tombe toujours sur webmail d'OVH... :cry:
Mon souhait est de rediriger http://lafermeduchevalnnn.com vers http://www.lafermeduchevalnnn.com
 
Nouveau WRInaute
Je suis sous OVH et j'ai rencontré également un tas de problème, mais ce code fonctionne bien :

Code:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [L,R=301]
 
Olivier Duffez (admin)
Membre du personnel
Tchouk a dit:
Je suis sous OVH et j'ai rencontré également un tas de problème, mais ce code fonctionne bien :

Code:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [L,R=301]
ce code fonctionne-t-il vraiment pour les domaines ayant une extension constituée de 2 parties, comme co.uk ?
 
WRInaute accro
Logiquement il me semble que oui, mais je ne m'aventurerais pas à l'affirmer n'ayant pas ce genre de ndd.
Par contre comme ce code semble remporter l'unanimité, ce serait bien de le mettre dans le premier post, et le code inverse qui se trouve un peu plus bas aussi.
 
WRInaute passionné
Non, ça ne marche effectivement pas pour domaine.co.uk, car la rewritecond dit "un groupe de caractères sauf le point puis un point, puis un groupe de caractères sauf le point"

:wink:

Quand à la règle qui pose problème il suffit de l'écrire de manière correcte et elle marche : :mrgreen:

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

Enfin, le probléme n'est pas le fait d'OVH mais vient de la configuration d'apache avec les regexp.
 
Olivier Duffez (admin)
Membre du personnel
fandecine a dit:
Non, ça ne marche effectivement pas pour domaine.co.uk, car la rewritecond dit "un groupe de caractères sauf le point puis un point, puis un groupe de caractères sauf le point"

:wink:
tu aurais une version qui marche même pour ce genre de NDD ?
 
WRInaute passionné
Ceci marche très bien :

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

Il faut noter que le code qui ne marche pas n'est pas du à l'absence du nom de domaine mais au fait que le '.' dans une regexp est un caractère spécial qu'il faut échapper comme ceci '\.' si on veut signifier que c'est le caractère '.'

Si tu veux une régle universelle pour un domaine avec double extension c'est plus compliqué car le nombre de cas à prendre en compte est plus important; par exemple ceci :

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

peut se lire "un groupe de caractères sauf le point suivit d'un point puis d'un groupe de 2 caractères sauf le point puis d'un groupe de 2 caractères sauf le point. Donc à fonctionne pour domaine.co.uk mais ne fonctionne plus pour xx.fr par exemple ni pour domaine.gov.uk.

Mais je certifie que la règle que je donne avec le nom de domaine en clair fonctionne dans tous les cas si on n'oublie pas d'échapper les '.' :wink:
 
Nouveau WRInaute
salut tous le monde

s'il vous plait je veux faire une redirection monsite.com vers www.monsite.com

quand j'ajoute le code :
Code:
RewriteCond %{HTTP_HOST} !^www.example.com$ 
RewriteRule ^(.*)   http://www.example.com/$1  [QSA,L,R=301]

il me donne un erreur :

bon voilà le contenu de mon fichier .htaccess

Code:
RewriteEngine on
RewriteBase /
RewriteCond $1 !^(index\.php|images|sitemap\.xml|sitemap\.xml.gz|uploads|js|css|covers|captcha|calendar|widget|modal|src|trafficlogs|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]


Merci pour votre aide
 
WRInaute discret
bonjour à tous !

dans le cadre de mon projet actuel, je voudrais aussi utiliser cette solution seulement, j'ai 2 noms de domaines qui pointent vers la même application (gérés par vhost)
techniquement, on a accès aux vhost mais, pour des raisons pratiques, on aimerait faire ces redirections dans le htaccess

comment faire pour rediriger ndd1.com vers www.ndd1.com sans empiéter sur www.ndd2.com ? sachant que ndd2.com doit rediriger vers www.nddd2.com

merci d'avance
 
WRInaute discret
Bonjour à tous,

je chercher à cumuler la redirection "sans www" vers "avec www" et le .htaccess de WordPress:

Méthode WRI :
Code:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^example\.com [NC]
RewriteRule (.*) http://example.com/$1 [QSA,R=301,L]

.htaccess WordPress:
Code:
SetEnv PHP_VER 5_4
SetEnv REGISTER_GLOBALS 0

# 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
Le site visé est : http://egcampshare.com/ à rediriger de façon permanente en http://www.egcampshare.com/

J'aurais pensé modifier la dernière RewriteRule :
Code:
RewriteRule . /index.php [L]
en
Code:
RewriteRule .  http://www.egcampshare.com/index.php [L]
mais ça ne fonctionne pas comme je le souhaite, ça me fait même une boucle de redirection.

Merci pour vos avis ;)
 
WRInaute discret
Je n'utilise pas les règles de réécriture d'URL, mais un truc nettement plus simple :
Code:
<VirtualHost *:80>
        ServerAdmin contact@monsite.tld
# mon adresse du site en production :
        ServerName www.monsite.tld
# redirection 301 des sous domaine vers www.monsite.tld :
        ServerAlias monsite.tld
# Ouais, mais finalement je veux tout sur un autre NDD :
        RedirectPermanent / http://www.autre-site.tld
[…]
Je pense que ça doit facilement s'adapter sur un .htaccess en ne copiant pas la balise.
 
WRInaute discret
Marie-Aude a dit:
Tu ne modifies rien tu places simplement les trois lignes avant le bloc wordpress
tu veux dire quelque chose comme ça?
Code:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^example\.com [NC]
RewriteRule (.*) http://www.example.com/$1 [QSA,R=301,L]
# 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
j'ai besoin de la version de PHP et du register_globals et à vérifier mais il me semble avoir déjà testé cette option :
Code:
SetEnv PHP_VER 5_4
SetEnv REGISTER_GLOBALS 0
RewriteEngine On
RewriteCond %{HTTP_HOST} !^example\.com [NC]
RewriteRule (.*) http://www.example.com/$1 [QSA,R=301,L]
# 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
sans succès ou plutôt avec une boucle de redirection en résultat. Que je comprend de la façon suivante : l'astuce WRI redirige tout vers http://www.example.com, et les lignes de WP redirigent tout vers /index.php qui est redirigé à son tour par les lignes proposées par WRI et ça tourne en rond comme ça

pour ça qu'au départ je pensais modifier juste la dernière RewriteRule du bloc WordPress pour mixer les 2 et éviter une redirection d'un côté qui s'enchaîne sur l'autre ensuite (au risque de boucler)
 
Nouveau WRInaute
Bonjour,

qu'en est-il du référencement Google? Mon site est indexé sous le nom chocowe.com mais j'ai ensuite activé mon site et soumis mon sitemap sous le nom www.chocowe.com est-ce un problème? Que dire de http://chocowe.com et http://www.chocowe.com ?

Merci de vos réponses

Chocowe
 
Nouveau WRInaute
Bonsoir à tous,

j'esère que je ne parasite pas le post ! Au lieu d'en créer un nouveau, je préfère poser ma question ici.

Alors mon fichier d'origine .htacess se présente comme cela :

Code:
# 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

En le modifiant que dois-je obtenir ce-ci:

Code:
# 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]

Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^seo-redaction.com$
RewriteRule ^(.*) http://www.seo-redaction.com/$1 [QSA,L,R=301]
</IfModule>

# END WordPress

OU CELA :

Code:
# 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]
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^seo-redaction.com$
RewriteRule ^(.*) http://www.seo-redaction.com/$1 [QSA,L,R=301]
</IfModule>

# END WordPress

En fait je ne suis pas certain de devoir créer ou pas un espace entre ''Options +FollowSymlinks'' et ''RewriteRule . /index.php [L]''.

Désolé si cette question peut paraite anodine. Mais je souhaite bien faire les choses.

Merci à vous.
 
Nouveau WRInaute
Merci Marie-Aude pour cette réponse.

Malheuresuement elle est totalement incompréhensible pour moi. Je suis novice dans le domaine . C'est ce forum entre autre ainsi que d'autres documentations qui m'ont aidé. Pourais tu m'expliquer comme je dois procéder ?
 
Nouveau WRInaute
Marie-Aude a dit:
tu ferais mieux de mettre tes règles avant le paquet Wordpress


C'est bon j'ai pu m'en sortir et tu m'as envoyé sur la bonne voie ! Merci beaucoup ! J'ai ajouté des règles pour la sécrité et autre.
 
Nouveau WRInaute
Bonjour à tous,

Voilà j'ai suivi les conseils, j'ai essayé les 3 possibilités qui étaient proposées, mais aucune d'entre elles ne fonctionnent pour moi.
Voilà le code que j'ai rajouté, au début du .htaccess comme conseillé :
Code:
RewriteEngine on
Rewritecond %{HTTP_HOST} ^easy-competences.com$
Rewriterule ^(.*) http://www.easy-competences.com/$1 [QSA,L,R=301]

Le code semble bon, je ne sais pas si c'est le tirait qui pose problème. Un conseil ?

Merci d'avance
 
WRInaute impliqué
comme le site renvoie sur le webmail d'ovh, c'est plutôt dans la configuration du nom de domaine chez ovh qu'il faut regarder.
 
Nouveau WRInaute
Bonjour,

Tout d'abord merci pour cette discussion très enrichissante !

Ensuite ma question idiote : est-ce que ce bout de code permet de rediriger toutes les urls d'un site ?

Merci

Anthony
 
Nouveau WRInaute
Bonjour,

J'ai suivi vos conseils et créé un fichier .htaccess avec le code suivant :
Code:
RewriteEngine on
Rewritecond %{HTTP_HOST} ^monsite.fr$
Rewriterule ^(.*) http://www.monsite.fr/$1 [QSA,L,R=301]

Quand je tape dans la barre d'adresse monsite.fr je suis alors redirigé vers www.monsite.fr/www/ et j'ai une erreur 404
Not Found
The requested URL /www/ was not found on this server

Savez-vous d'où vient ce problème ?
 
Nouveau WRInaute
Bonjour, désolé de ressortir ce vieux dossier mais je n'y ai pas trouvé ma réponse dedans.

Je cherche à rediriger une adresse de ce style https://www.sous-domaine.domaine.fr vers https://sous-domaine.domaine.fr

Mais il faut aussi que si je tape http://sous-domaine.domaine.fr cela redirige vers https://sous-domaine.domaine.fr

Pour résumer:

https://www.sous-domaine.domaine.fr -> https://sous-domaine.domaine.fr
http://www.sous-domaine.domaine.fr -> https://sous-domaine.domaine.fr
http://sous-domaine.domaine.fr -> https://sous-domaine.domaine.fr

Actuellement j'ai ça dans mon htaccess mais ça ne fonctionne pas totalement

Code:
RewriteEngine On
RewriteCond %{HTTP_HOST} https://www.sous-domaine.domaine.fr
RewriteRule (.*) https://sous-domaine.domaine.fr/$1 [QSA,L,R=301]

RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://sous-domaine.domaine.fr/$1 [R,L]

Merci par avance
 
Dernière édition:
Discussions similaires
Haut