URL Rewriting qui dépasse l'entendement
#1
Posté 25 mai 2005 - 12:07
je viens de galérer une bonne heure à cause d'une règle d'URL Rewriting, pour finalement trouver une solution de remplacement que je ne comprends pas vraiment. C'est à y perdre des cheveux.
Si quelqu'un a une explication, merci d'avance.
Le but étant d'appeler la page suivante www.monsite.com/index.php?r=param1&a=param2 où param1 est un nombre et param2 des caractères avec un tiret possible.
Règle numéro 1, en passant l'URL suivante www.monsite.com/themes/param1/param2.xhtml :
RewriteRule ^themes/([0-9]+)/([a-zA-Z-]+)\.xhtml$ themes.php?r=$1&a=$2 [L]
ça marche pas
Règle numéro 2, en passant l'URL suivante www.monsite.com/themes-param1-param2.xhtml :
RewriteRule ^themes-([0-9]+)-([a-zA-Z-]+)\.xhtml$ themes.php?r=$1&a=$2 [L]
ça marche
Règle numéro 3, en passant l'URL suivante www.monsite.com/theme/param1/param2.xhtml :
RewriteRule ^theme/([0-9]+)/([a-zA-Z-]+)\.xhtml$ themes.php?r=$1&a=$2 [L]
ça marche
J'ai choisi la règle 3 car je veux garder l'idée de sous-répertoires. La règle 1 fonctionnait pourtant sur mon serveur mais pas chez mon hébergeur. Je ne comprends pas pourquoi themes avec s ne marche pas. Ai-je commis une erreur de syntaxe ?
Si quelqu'un peut aussi m'aider pour remplacer [0-9]+ par [:digit:] ou quelque chose dans le genre, c'est possible ?
Merci d'avance,
skale
#2
Posté 25 mai 2005 - 12:34
http://www.webmaster...showtopic=11451
#3
Posté 25 mai 2005 - 12:45
#4
Posté 25 mai 2005 - 12:52
Jeroen 26 mars 2005 dit :
Est-ce que vous avez épluché son article ? La réponse est peut-être tout simplement là
Enfin, il devrait voir ce message maintenant.
#6
Posté 25 mai 2005 - 13:18
skale, le mercredi 25 mai 2005, 13h54, dit :
<{POST_SNAPBACK}>
Parce que sous linux, et selon la config du serveur, un fichier xyz demandé et inexistant forcera la lecture d'un fichier xyz.php
Idem sur le Hub: http://www.webmaster-hub.com/index appelle index.php, et -http://www.webmaster-hub.com/home appelle home.php
Donc avec le s, et comme ce fichier existe avec l'extension .php, c'est celui-ci qui est proposé ... c'est tout bête.
Dan
#8
Posté 25 mai 2005 - 13:29
Dan, le mercredi 25 mai 2005, 14h18, dit :
non avec la règle 1, aucun fichier n'est proposé, je reçois une erreur 404. En plus, le serveur semble configurer de telle façon, qu'il essaye de trouver d'abord un fichier xml (et il existe) avant le php donc www.monsite.com/themes va envoyer www.monsite.com/themes.xml
il y a autre chose
#9
Posté 25 mai 2005 - 13:40
Vu que le répertoire n'existe pas, Apache va chercher si un fichier portant un basename égal à ce nom existe.
Et manifestement il s'en trouve sur ton site.
Il recherchera dans les extensions qui lui sont connues, et présentera le premier.
Que se passe-t-il lorsque tu appelles themes.xml directement ?
Si tu as possibilité de mettre le debugging à 9, tu pourras voir précisément ce qu'il tente de rechercher.
#10
Posté 25 mai 2005 - 14:11
Dan, le mercredi 25 mai 2005, 14h40, dit :
il affiche le contenu du fichier sans les tags (idem si j'appelle theme). Si j'appelles themes/ j'ai une erreur 404
Dan, le mercredi 25 mai 2005, 14h40, dit :
Malheureusement non, je suis en mutualisé, impossible de modifier httpd.conf (RewriteLog "logs/rewrite.log" RewriteLogLevel 9, c'est ça ?)
Cependant je crois savoir ce qu'il cherche, je viens de faire un test tout aussi bête, pas besoin de débuggage, j'ai créé le répertoire themes et maintenant la règle 1 fonctionne. Donc si le fichier appelé a le même nom que le répertoire passé dans l'url, le répertoire doit exister. Je trouve cela quand-même très bizarre.
#11
Posté 25 mai 2005 - 14:31
skale, le mercredi 25 mai 2005, 15h11, dit :
<{POST_SNAPBACK}>
Cela confirme tout de même ce que je te disais... non ?
Je sais que c'est un comportement idiot... je vais chercher la raison de celui-ci.
Mais s'il s'agit d'un paramétrage serveur (hors .htaccess) il ne sera pas à ta portée
#12
Posté 25 mai 2005 - 14:42
Et c'est lié à la fonction pathinfo() ... qui permet par exemple à dotclear d'avoir des URLs sympathiques sans faire de la réécriture...
Dans le genre: domaine.com/page.php/2004/12/... comme on trouve sur de nombreux sites de presse.
Dans ce cas, on peut laisser tomber l'extension de page.php et écrire l'URL sous la forme domaine.com/page/2004/12/... ce qui "fait plus propre"
Et voilà
Dan
#13
Posté 25 mai 2005 - 14:49
Dan, le mercredi 25 mai 2005, 15h31, dit :
euh oui, le problème vient du répertoire.
Dan, le mercredi 25 mai 2005, 15h31, dit :
Le comportement est plus qu'idiot même. D'ailleurs j'ai pas encore tout compris, mais bon, maintenant ça marche. Je pense qu'on a éclairé quelques lanternes.
Je présenterai mon nouveau site très bientôt.
Merci,
skale



Haut














