Version complète: sur le forum Webmaster Hub : rewriting et htaccess
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
tyuiopo
Salut à tous,

Je suis photographe et j'essaye laborieusement le rewriting de mon site ( http://www.david-merlin.com )
Mes pages actuelles sont de la forme : index.php?start=30&album=1
Le rewriting associé dans htaccess est : RewriteRule ^phototheque-([0-9]*)-([0-9]*)\.php$ /phototheque/index.php?start=$2&album=$1 [L]

Je ne comprend pas comment faire en sorte que les visiteurs issus des pages en php "brut" puisse être automatiquement redirigées vers les pages sans variables dans l'url.

Je crois savoir qu'il faut utiliser une requête de type :

RewriteCond %{REQUEST_URI} !^phototheque/index.php$
RewriteRule .* - [L]

RewriteRule ^.*$ %{QUERY_STRING}


Mais j'avoue ne pas être très doué pour l'adapter à mon cas !

Merci d'avance pour votre aide wink.gif
KaRaK
Bonjour,

Je te conseille la lecture de cet article :

http://www.webmaster-hub.com/publication/article5.html
tyuiopo
Merci pour le lien mais j'ai déjà consulté cette page et la solution de mon problème semble ne pas s'y trouver.
David
Vincent
CITATION(tyuiopo @ lundi 24 juillet 2006, 17h16) *
Je ne comprend pas comment faire en sorte que les visiteurs issus des pages en php "brut" puisse être automatiquement redirigées vers les pages sans variables dans l'url.


En fait, je vois le problème...
Tes visiteurs ne doivent plus voir 1 seule adresse avec des parametres index.php?start=30&album=1
Il faut modifier le code php pour generer des adresses de type : index-30-1.php par exemple.
et ensuite tu crees le .htaccess qui va bien, qui va rediriger ceux qui visitent index-30-1.php vers index.php?start=30&album=1
TheRec
Bonjour,

J’ai répondu à une question similaire ici, appliquée à ton cas cette méthode donnera ceci, à placer dans le répertoire racine de ton site, dans le fichier .htaccess :
CODE
RewriteEngine On

RewriteRule ^phototheque-([0-9]*)-([0-9]*)\.php$ /phototheque/index.php?album=$1&start=$2 [L]

RewriteCond %{QUERY_STRING} ^start=(.+)&album=(.+)$
RewriteRule ^phototheque/index.php$ http://www.david-merlin.com/phototheque-%1-%2.php? [L]

Note que j'ai changé l'ordre des paramètres dans ta première règle... ainsi lorsque la règle dépendante de la RewriteCond est appliquée et qu'il y a redirection, cela ne créera pas de boucle. Un autre moyen d’éviter cela aurait été de renommer ton fichier "phototheque/index.php" en autre chose et ne modifier que la première RewriteRule (ce n'est pas important pour la deuxième RewriteRule que "phototheque/index.php" existe, c'est juste une analyse de ce que le visiteur a utilisé comme adresse... alors que pour la première RewriteRule le fichier DOIT exister vu que c’est ce qui est présenté à l’utilisateur lorsqu’il tape l’adresse sans paramètre Querystring) wink.gif

Bonne continuation !
tyuiopo
Salut,

Merci pour ton coup de pouce, ce script fonctionne à condition de changer -%1-%2.php? en -%2-%1.php?.

J'essaye maintenant de faire la réécriture des pages qui affichent la photo en grand format, elles ont la forme suivante:http://www.david-merlin.com/phototheque/show.php?start=0&file=168_6848.jpg&album=1 et je veux les réécrire de cette façon : http://www.david-merlin.com/phototheque/sh...p;album=$3

Le script suivant est placé dans .htaccess :

RewriteEngine On

RewriteRule ^phototheque/photos-([0-9]*)-([0-9_[A-Za-z]*)-([0-9]*)\.php$ /phototheque/show.php?start=$1&file=$2&album=$3 [L]

RewriteCond %{QUERY_STRING} ^start=(.+)&file=(.+)&album=(.+)$

RewriteRule ^phototheque/show.php$ http://www.david-merlin.com/phototheque/photos-%1-%2-%3.php? [L]

Conséquence : une page d'erreur 404 !
Merci de votre aide !
Bourinho
Salut,

je ne suis pas sur de ce que je vais avancer, mais ça sera peut être une piste qui te permettra de t'éclairer...

Il est possible que le slash présent dans ta réécriture soit mal interprété (celui entre phototeque et photos)... il y a peut être confusion avec un dossier de ton site...qui n'existe pas, d'où l'erreur 404!!! Tente avec un tiret, cela fonctionnera peut être... en tout cas, sinon, je ne vois pas trop la cause de ce soucis étant donné le peu de différence avec la version qui fonctionne!!!

A+
tyuiopo
Salut,

Le tiret ne change rien, merci d'avoir essayé de m'aider,
cordialement,
David
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.