Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Serveurs (Apache, IIS,...) > Apache
Apache Forum d'entraide Apache. Avant de poster : Cours Apache, FAQ Apache
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/09/2011, 14h40   #1
Membre à l'essai
 
Inscription : novembre 2006
Messages : 121
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 121
Points : 22
Points : 22
Par défaut [URL rewriting] Ajouter un Catch-all

Bonjour,

Sur mon site j'ai quelques pages principales (une dizaine) qui correspondent à des fichiers PHP sur le serveur.

J'ai mis en place l'URL rewriting pour ces quelques pages, de manière à ce qu'on y accède via des URL de ce type :
http://domaine/voiture
http://domaine/machin-truc

Voici la structure des fichiers sur le serveur :
  • .htaccess
  • wp-index.php
  • index.php
  • pages
    • voiture.php
    • camion.php
  • images
    • photo.jpg
    • schema.png

Et le contenu de mon .htaccess :
Code :
1
2
3
4
5
6
7
RewriteEngine on
RewriteBase /

# Rewrite des URL style /voiture-rapide vers le fichier PHP dédié
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9_-]+)$ pages/$1.php [L]
Maintenant, je voudrais y ajouter un catch all, c'est à dire que toutes les URL qui correspondent à mon pattern [a-zA-Z0-9_-]+ vont être réécrites vers wp-index.php si et seulement si le fichier PHP correspondant à la requête n'existe pas dans /pages/.

Au final, ça devrait faire ça :


Pour ça j'ai ajouté une nouvelle règle à la fin de mon .htaccess :

Code :
1
2
3
4
# Rewrite du reste des URL vers wp-index.php (catch all)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wp-index.php [L]
Ça fonctionne mais j'ai un doute, parfois mon navigateur (Firefox) indique un message d'erreur style redirections infinies...

Je souhaiterais avoir votre avis, est-ce qu'il y a une meilleure solution ?

Merci
Galdon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2011, 21h51   #2
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 293
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 293
Points : 8 579
Points : 8 579
A priori, c'est la bonne méthode. Ce qu'il faut c'est installer un plug-in dans Firefox du style Live Http Headers pour voir qu'elle est la redirection qui pose problème. Il s'agit peut-être juste d'ajouter un /? à la fin d'une RewriteRule ou un truc du genre, rien de bien grave.
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2011, 19h30   #3
Membre à l'essai
 
Inscription : novembre 2006
Messages : 121
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 121
Points : 22
Points : 22
Merci d'avoir répondu.

J'ai déjà ce plugin (live http headers), mais je n'arrive pas à reproduire l'erreur.
Donc ça doit être bon...
Galdon est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h59.


 
 
 
 
Partenaires

Hébergement Web