skale Posté 25 Mai 2005 Posté 25 Mai 2005 bonjour, 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
Compte supprimé Posté 25 Mai 2005 Posté 25 Mai 2005 Il se trouve que j'ai remarqué exactement la même chose, j'ai psté il y a quelques temps, mais pas de réponse.... http://www.webmaster-hub.com/index.php?showtopic=11451
skale Posté 25 Mai 2005 Auteur Posté 25 Mai 2005 exact, j'avais lu ton post mais 2 mois se sont écoulés depuis et je n'ai pas fait le rapprochement. C'est le même problème. Quelqu'un depuis a bossé et a peut-être trouvé ? C'est quand-même dingue que ça marche avec des - et pas des / on peut effectivement penser à un bug, sinon il y a une réponse qui nous échappe quelquepart. Ou alors c'est une règle à appliquer, le nom du fichier appelé doit être différent du nom du répertoire.
Arlette Posté 25 Mai 2005 Posté 25 Mai 2005 Question sans réponse, Dan (bon anniversaire), tu as forcément eu vent du pb, toi le spécialiste es urlrewriting C'était le jour de son anniversaire, on peut lui laisser quelques jours de répi pendant cette période ? En rentrant de vacances il aura peut-être zappé le post. C'est pas son genre de ne pas répondre dans ce domaine. Est-ce que vous avez épluché son article ? La réponse est peut-être tout simplement là Enfin, il devrait voir ce message maintenant. Dan : Ils ont besoin de tes lumière
skale Posté 25 Mai 2005 Auteur Posté 25 Mai 2005 J'apporte une petite précision, parce que la règle 1 qui nous pose problème elle fonctionne sur une version d'Apache 1.3.27 qui tourne sous Windows, mais elle ne fonctionne pas sur une version d'Apache 1.3.3 qui tourne sous linux
Dan Posté 25 Mai 2005 Posté 25 Mai 2005 J'apporte une petite précision, parce que la règle 1 qui nous pose problème elle fonctionne sur une version d'Apache 1.3.27 qui tourne sous Windows, mais elle ne fonctionne pas sur une version d'Apache 1.3.3 qui tourne sous linux 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
Compte supprimé Posté 25 Mai 2005 Posté 25 Mai 2005 Merci de tes lumières ... c'est tout bête. Je dirais plutôt que c'est un peu bête : quelle utilité d'avoir ce comportement ??
skale Posté 25 Mai 2005 Auteur Posté 25 Mai 2005 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. 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
Dan Posté 25 Mai 2005 Posté 25 Mai 2005 Pourtant c'est bien le fait que themes soit suivi d'un / et donc considéré comme un répertoire qui fait que cela se présente. 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.
skale Posté 25 Mai 2005 Auteur Posté 25 Mai 2005 Que se passe-t-il lorsque tu appelles themes.xml directement ? il affiche le contenu du fichier sans les tags (idem si j'appelle theme). Si j'appelles themes/ j'ai une erreur 404 Si tu as possibilité de mettre le debugging à 9, tu pourras voir précisément ce qu'il tente de rechercher. 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.
Dan Posté 25 Mai 2005 Posté 25 Mai 2005 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. 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
Dan Posté 25 Mai 2005 Posté 25 Mai 2005 En fait cela vient de l'utilisation de php en module Apache (tu as donc peut-être un fonctionnement en cgi chez toi). 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
skale Posté 25 Mai 2005 Auteur Posté 25 Mai 2005 Cela confirme tout de même ce que je te disais... non ? euh oui, le problème vient du répertoire. Je sais que c'est un comportement idiot... je vais chercher la raison de celui-ci. 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
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant