Avoir toujours les www

  • Auteur de la discussion Auteur de la discussion Wells
  • Date de début Date de début
WRInaute discret
Bonjours, je viens vers vous ar il y a définitivement qq chose que je ne comprend pas dans le système de rewrite.

Je veux faire qq chose de trés simple.

Quel que soit la page sur laquelle j'arrive dans mon site, si il manque les www devant, je redirige vers la même page avec les www.

Mais dans le même temps d'autres règles doivent s'appliquer. qui transforme des pages comme toto?php?id=1 en Toto.html?p=1

Je ne sais pas si c'est spécialement compliqué, mais je n'y arrive pas....
Si une ame charitable passe par la :)
 
WRInaute discret
Moui mais ce que je veux est plus compliqué que ca.

si je met:

Code:
RewriteCond %{HTTP_HOST} ^septentrion-game.com$
RewriteRule ^(.*)   http://www.septentrion-game.com/$1

Effectivement ca me rajoute bien les www.

Sauf que:

1) ca fou en l'air tout mon rewrite dans mes sous dossiers
2) ca ne rajoute pas les www pour mes sous dossiers (septentrion-game.com/Registre/toto.php n'est pas compléter par exemple)
3) si je met juste en dessous:

Code:
RewriteRule ^Accueil.html$ /index.php [L]

Bah l'instruction est royalement ignoré. Bref, comme tu le vois je suis un poil plus loin que le cas d'école classique :)
 
WRInaute discret
Code:
RewriteCond %{HTTP_HOST} !^www.septentrion-game.com [NC] 
RewriteRule (.*) http://www.septentrion-game.com/$1 [QSA,R=301,L]

Rajoute bien les www partout. Par contre je suis toujours bloquer si jeu veux à la fois faire:


 
WRInaute impliqué
Wells a dit:
Code:
RewriteCond %{HTTP_HOST} !^www.septentrion-game.com [NC] 
RewriteRule (.*) http://www.septentrion-game.com/$1 [QSA,R=301,L]

Rajoute bien les www partout. Par contre je suis toujours bloquer si jeu veux à la fois faire:

C'est normal, tu as un L a droite, ce qui veut dire que si la règle s'applique, il ne faut pas appliquer les règles qui suivent. Il faut l'enlever donc:

Code:
RewriteCond %{HTTP_HOST} !^www.septentrion-game.com [NC] 
RewriteRule (.*) http://www.septentrion-game.com/$1 [QSA,R=301]
 
WRInaute discret
Voila:

Code:
RewriteCond %{HTTP_HOST} !^www.septentrion-game.com [NC] 
RewriteRule (.*) http://www.septentrion-game.com/$1 [QSA,R=301]

RewriteCond %{HTTP_HOST} !^www.septentrion-game.com/index.php [NC] 
RewriteRule (.*) http://www.septentrion-game.com/Accueil.html [QSA,R=301]

RewriteRule ^Accueil.html$ /index.php [L]

Donc en gros je veux que sa rajoute tjs les www si ils n'y sont pas. Mais dans le cas spécial ou on est sur l'index, je veux qu'il s'affiche tt le temps Accueil.html (qui pointe sur index.php)
 
WRInaute impliqué
Wells a dit:
Voila:

Code:
RewriteCond %{HTTP_HOST} !^www.septentrion-game.com [NC] 
RewriteRule (.*) http://www.septentrion-game.com/$1 [QSA,R=301]

RewriteCond %{HTTP_HOST} !^www.septentrion-game.com/index.php [NC] 
RewriteRule (.*) http://www.septentrion-game.com/Accueil.html [QSA,R=301]

RewriteRule ^Accueil.html$ /index.php [L]

Donc en gros je veux que sa rajoute tjs les www si ils n'y sont pas. Mais dans le cas spécial ou on est sur l'index, je veux qu'il s'affiche tt le temps Accueil.html (qui pointe sur index.php)

Je comprend ce que tu veux faire, mais ce n'est pas ce que tu as écrit...

Ta première règle ajoute les www s'ils ne sont pas la, OK.

Mais la deuxième redirige tout ce qui n'est pas -http://www.septentrion-game.com/index.php vers Accueil.html ! :?:

Au passage, mettre des majuscules dans le nom de la page ne me parait pas une bonne idée.

Essaie ce qui suit.

Code:
DirectoryIndex index.php

RewriteEngine On

RewriteCond %{HTTP_HOST} !^www.septentrion-game.com [NC] 
RewriteRule (.*) http://www.septentrion-game.com/$1 [QSA,R=301]

RewriteCond %{QUERY_STRING}% !^stop
RewriteRule index.php /Accueil.php [QSA,R=301]

RewriteRule ^Accueil.html$ /index.php?stop [L]
 
WRInaute discret
Impec ça marche. Mais comme je suis un casse couille nait je voudrais faire une dernière chose:

si on viens sur la racine (septentrion-game.com/) je veux que ca aille également sur accueil.html

edit: le htaccess étant a la racine, cela ne me met pas les www dans les sous répertoire, est ce que je dois mettre le même code partout, sachant qu'il y a dans certains sous répertoire des htaccess avec réécriture d'url?
 
WRInaute impliqué
Wells a dit:
Impec ça marche. Mais comme je suis un casse couille nait je voudrais faire une dernière chose:

si on viens sur la racine (septentrion-game.com/) je veux que ca aille également sur accueil.html
Et là ça fait quoi?

edit: le htaccess étant a la racine, cela ne me met pas les www dans les sous répertoire, est ce que je dois mettre le même code partout, sachant qu'il y a dans certains sous répertoire des htaccess avec réécriture d'url?

Les .htaccess des sous répertoires remplacent celui situé à la racine. Tu peux donc soit remettre les règles dans chaque .htaccess des sous répertoires, soit dire d'hériter les règles en ajoutant la ligne suivantes dans les .htaccess des sous répertoires:

Code:
RewriteOptions inherit
 
WRInaute impliqué
Essaie :

Code:
DirectoryIndex index.php

RewriteEngine On

RewriteCond %{HTTP_HOST} !^www.septentrion-game.com [NC]
RewriteRule (.*) http://www.septentrion-game.com/$1 [QSA,R=301]

RewriteCond %{QUERY_STRING}% !^stop
RewriteRule index.php /Accueil.php [QSA,R=301]

RewriteCond %{QUERY_STRING}% !^stop
RewriteRule ^$ /Accueil.php [QSA,R=301]

RewriteRule ^Accueil.html$ /index.php?stop [L]
 

➡️ 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
Haut