Site accessible avec et sans le www

WRInaute discret
Bonjour,

Je souhaite que mon site soit accessible uniquement avec les www, pour cela j'ai suivi cette méthode https://www.webrankinfo.com/actualites/2 ... liques.htm ce qui me donne droit à une jolie erreur 500 quand j'essaye d'accéder à mon site sans les "www" :?

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

Pour info mon .htaccess est situé avant le répertoire www.

Y a t il une chose que j'ai oublié ?
 
WRInaute discret
Il me semble que le fichier .htaccess devrait être dans ce répertoire, alors.
Je ne sais plus si la configuration par fichier .htaccess remonte tous les répertoires du système de fichier, ou seulement jusqu'à la racine du VirtualHost...
 
WRInaute discret
je viens d'essayer ca ne fonctionne pas :(

et en plus ca rentre en conflit avec le.htaccess qui est avant le rep www
 
WRInaute passionné
ajoutes ca au debut de ton index.php est le tour est joué


Code:
if($_SERVER['HTTP_HOST'] == 'tondomaine.fr') {
	$url = 'http://www.tondomaine.fr/';
	header('Status: 301 Moved Permanently');
	header('Location: '.$url);
	exit();
}
 
WRInaute discret
effectivement ca fonctionne merci :)
edit : inconvénient il faut rajouter ce code sur chaque page :(

cependant c'est toujours énervant de ne pas comprendre ce qui cloche avec le .htaccess
 
WRInaute passionné
sinon je viens de tester ca :

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

et ca marche tres bien
 
WRInaute discret
oui justement justement j'ai trouvé ce code sur de nombreux topic

c'est justement ça qui m'échappe

je me demande si ce n'est pas lié à ce que j'ai à la suite du htaccess pour la réécriture qui pose problème

Code:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.example\.com [NC]
RewriteRule (.*) http://www.example.com/$1 [QSA,R=301,L] 
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteRule ^.+\.php$ http://www.exxample.cpm/index.php
ErrorDocument 404 http://www.example.com/index.php
RewriteRule (.*)(-.+)-([^-]+)-([^-&]*)([^-]*)\.html $1$2&$3=$4$5\.html [N]
RewriteRule (.*)-([^-]+)-([^-]*)(.*)\.html $1.php?$2=$3$4 [L]
RewriteRule ^(.*).html $1.php [L]
 
WRInaute discret
@webmasterlamogere : ça me donne une erreur 500 sur www.example.com

@raljx : idem :( ce qui me rassure d'un côté la réécriture derrière est bonne
(testé à l'intérieur et l'extérieur du rep www)
 
WRInaute passionné
il me semble qu'il y a des cas ou il ne faut pas le / avant $1 :
Code:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.example\.com [NC]
RewriteRule (.*) http://www.example.com$1 [QSA,R=301,L]
 
WRInaute passionné
question con (au moins je previens) :
AddModule modules/standard/mod_rewrite.o est bien present dans ton httpd.conf

as-tu redemarré apache ?
 
WRInaute discret
Je viens d'avoir une info supplémentaire de mon hébergeur.

l'adresse avec www et celle sans pointe vers le même endroit par défaut dans le vhost apache.

en gros je suis censé faire quoi .. enfin si je peux faire quelque chose :!:
 
WRInaute passionné
Ben a part mettre le code php que je t'avais filé en debut de thread dans un fichier fonction et recup l'url de tes pages je vois plus trop de solution ... bon ca fait un peu bricolage mais tant que tu n'as pas une reponse de ton fournisseur ca eput aider un temps

dans un fichier que tu apelles via un include();

Code:
if($_SERVER['HTTP_HOST'] == 'tondomaine.fr') {
   
   $url = $_SERVER['REQUEST_URI'];
   header('Status: 301 Moved Permanently');
   header('Location: http://www.tondomain.fr'.$url);
   exit();
}

n'empeche que je ne comprends pas pourquoi tes autres regles marchent et pas celle la
 
WRInaute discret
Oui merci pour ta solution, mais c'est vrai que je me vois mal aller mettre ce code sur chaque page.

En attendant leur réponse je mettrais ce code sur index.php en espérant que ça soit temporaire. :)
 
WRInaute passionné
nan, ce code (modifié par rapport a celui du début) peut etre inseré dans un fichier de fonctions par exemple et etre appellé (le fichier) dans les pages voulues. Dans le cas d'un internaute qui tape tondomain.ft/tapage.php, il recupere l'url tapée apres tondomain.fr (/tapage.php) et redirige vers www.tondomain.fr/tapage.php
 
WRInaute passionné
ah oui, mais tu n'as pas deja un fichier que tu apelles sur toutes tes pages ? tu mets le code dedans au debut ...

celui ou tu te connectes a ta base de données par ex
 
WRInaute discret
ah oui autant pour moi j'ai bien ce type de fichier, mais je pensais que ce code devait être situé en début de page...
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut