problème rewriting avec forcer www

WRInaute discret
Bonjour,

j'ai effectué un url rewriting qui a très bien marché.

Mon cas était le suivant.

L'adresse d'origine était
www.monsite.com/dossier/sousdossier/titre=nom du membre

que j'ai rewrité en
www.monsite.com/ nom du membre

Cependant, ensuite pour éviter le contenu dupliqué j'ai modifié mon fichier .htaccess
Pour forcer le sous-domaine www

mais lorsque je tappe l'url

monsite.com/nom du membre, ça ne redirige pas vers

www.monsite.com/nom du membre (comme je voudrais)

mais vers www.monsite.com/dossier/sousdossier/titre=nom du membre (url que j'avais rewrité au départ)

Comment puis je y remédier si quelqu'un a une idée, et si je suis assez clair.

Merci.
 
WRInaute accro
Par hasard, la règle que tu as mise en place pour forcer la redirection vers le www ne serait-elle pas avant les autres et ne se terminerait pas par un flag [L] ?
 
WRInaute discret
elle est en 2ème position et se termine par
Code:
 [QSA,R=301,L]
j'ai essayer en enlevant le "L" mais bizarrement cela ne change rien
 
WRInaute discret
oui bien, sûr le voici
Code:
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]*)$ /dossier/sous-dossier/index.php?titre=$1 [L]

RewriteCond %{HTTP_HOST} !^www\.monsite\.com [NC]
RewriteRule (.*) http://www.monsite.com/$1 [QSA,R=301]
 
WRInaute impliqué
met la derniere règle (les deux dernières lignes) juste apres RewriteEngine On.



L'ordre des règles est important.
 
WRInaute accro
Merci d'utiliser example.com comme URL d'exemple.
-monsite.com est un site réel.
 
WRInaute impliqué
Re: autre question

Yanig a dit:
Sinon,

si je peux me permettre une autre requête, toujours en ce qui concerne l'url rewriting.

j'aimerais effectuer un rewrite selon ce modèle:

Code:
www.monsite.com/rubrique1      vers            www.monsite.com/theme1.php
www.monsite.com/rubrique2       vers           www.monsite.com/theme2.php

Merci

S'il n'y a pas de logique particulière entre les noms des rubriques et les noms des thèmes, met une règle par page:

Code:
RewriteRule rubrique1   /theme1.php [L]
RewriteRule rubrique2   /theme2.php [L]

Si tu as des paramètres dans tes URL, met [QSA,L] à la place de [L]

Si les noms des rubriques et de sthèmes sont liés entre eux, explique le lien ici. Dans ce cas on doit pouvoir écrire une règle générique.

Enfin, on peut faire des RedirectPermanent à la place des règels de réécriture, mais la cohabitation entre les deux est délicate, c'est pour ça que je te conseille de tout faire avec des règles de réécriture.
 
WRInaute discret
Et bien ça marche en utilisant ce code :


Code:
RewriteRule ^([^/]*)/nouveau_nom/$ /rubrique1/index.php ?titre=$1 [QSA,L]

Par contre ça ne fonctionne qu’avec un / en fin d’url.

Puis je y remédier, si oui comment ?

Sachant que ce rewrite est probablement en conflit avec celui ci :

Code:
RewriteRule ^([^/]*)$ /dossier/sous-dossier/index.php?titre=$1 [L]



Autre question, est ce possible d’intégrer 2 variables dans un rewrite.

J’espère que mon message est assez clair.

Merci
 
WRInaute impliqué
Yanig a dit:
Et bien ça marche en utilisant ce code :


Code:
RewriteRule ^([^/]*)/nouveau_nom/$ /rubrique1/index.php ?titre=$1 [QSA,L]

Par contre ça ne fonctionne qu’avec un / en fin d’url.

Puis je y remédier, si oui comment ?
Je ne comprend pas cette règle. Le titre de la page est avant le nouveau nom? Et ils sont séparés par un / ?

Dis moi plutôt ce que tu veux.

Yanig a dit:
Sachant que ce rewrite est probablement en conflit avec celui ci :

Code:
RewriteRule ^([^/]*)$ /dossier/sous-dossier/index.php?titre=$1 [L]

Tes deux règles ne sont pas en conflit, parce que tu as mis des / dans la première.

Yanig a dit:
Autre question, est ce possible d’intégrer 2 variables dans un rewrite.

Oui, les variables sont récupérées par $1, $2, etc, chacune correspondant a une paire de parnethese. Par exemple


Code:
RewriteRule ^([^/]*)/nouveau_nom/$ /rubrique1/index.php ?titre=$1 [QSA,L]

Par contre ça ne fonctionne qu’avec un / en fin d’url.

Puis je y remédier, si oui comment ?
[/quote]
Je ne comprend pas cette règle. Le titre de la page est avant le nouveau nom? Et ils sont séparés par un / ?

Il faut que tes URL se terminent par une exetnsion mime (par exe .html) si ce ne sont pas des répertoires. En principe, en Apache, une url se termine soit par un / (repertoire), soit c'est un nomp de fichier avec son type mime.

Yanig a dit:
Sachant que ce rewrite est probablement en conflit avec celui ci :

Code:
RewriteRule ^(.*)-(.*)\.html$ /index.php?titre=$1&id=$2 [L]

pour des url de la forme nom-id.html
 
Discussions similaires
Haut