Page 1 sur 3

Url-rewriting et wampserver 2

Posté : 19 juil. 2008, 14:55
par albat
Bonjour,

Je rencontre un problème de réécriture d'URL sur mon poste de dév
alors qu'en ligne, tout fonctionne très bien.
Ben oui, moi, je déploie en ligne sans avoir validé les tests en local. Même pas peur ! :langue:

:!: Quelques éléments :
Serveur : Wampserver 2.0 (Apache 2.2.8, PHP 5.2.6)
rewrite-module : activé
AddDefaultCharset UTF-8
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^accueil.htm$ accueil.php [L]
RewriteRule ^collections.htm$ collections.php [L]
RewriteRule ^informations.htm$ informations.php [L]

RewriteRule ^(.*)\.htm\|a([0-9]+)$ /auteur.php?code=$2 [L]
RewriteRule ^(.*)\.htm\|l([0-9]+)$ /livre.php?code=$2 [L]
[Sat Jul 19 14:31:20 2008] [error] [client 127.0.0.1]
(20024)The given path misformatted or contained invalid characters:
Cannot map GET /projet3/blablabla-de-test.htm|a14 HTTP/1.1 to file
DocumentRoot "g:/wamp/www/"
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>

<Directory "g:/wamp/www/">
Options Indexes FollowSymLinks
AllowOverride all
# onlineoffline tag - don't remove
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
</Directory>
:?: Ze quouechtionne iz :
Sachant que toutes les règles de réécriture de mon .htaccess fonctionnent en PROD,
pourquoi en LOCAL, seules les règles en vert fonctionnent et pas celles en rouge ? :shock:

Merci !

Posté : 19 juil. 2008, 15:40
par zeus
Quelle version d'Apache en prod ?

Je suis étonné que le caractère | fonctionne correctement dans un.htaccess :-k

Posté : 19 juil. 2008, 15:45
par albat
Quelle version d'Apache en prod ?
2.2.3 (Unix)
Je suis étonné que le caractère | fonctionne correctement dans un .htaccess :-k
Et pourtant !
Utilisation licite confirmée sur WebRankInfo.

Posté : 19 juil. 2008, 15:53
par zeus
Je serais toi, je tenterais de modifier tes règles avec le | en dev pour me mettre dans les dents que ce n'est pas ça ... :lol:

Re: Url-rewriting et wampserver 2

Posté : 19 juil. 2008, 16:00
par albat
Il y avait une erreur qui m'avait échappé :
elle ne bugue pas en ligne, mais en local.
RewriteRule ^(.*)\.htm\|a([0-9]+)$ auteur.php?code=$2 [L]
RewriteRule ^(.*)\.htm\|l([0-9]+)$ livre.php?code=$2 [L]
Le / initial redirigeait vers des fichiers placés sur la racine.
C'est OK sur mon hébergement mutualisé,
mais en local, ça remonte un dossier trop haut. Forcément.

Mais ça n'a pas suffi à résoudre le pépin. :cry:

Toujours une erreur 403...

Posté : 19 juil. 2008, 16:08
par albat
Sur la suggestion d'un zoziau qui a posé ses petites papattes sur ma boîte aux lettres, ;)
j'ai simplifié l'écriture du format à réécrire :
// anciennes écritures
RewriteRule ^(.*)\.htm\|a([0-9]+)$ auteur.php?code=$2 [L]
RewriteRule ^(.*)\.htm\|l([0-9]+)$ livre.php?code=$2 [L]

// nouvelles écritures (en retirant le | du modèle)
RewriteRule ^(.*)a([0-9]+)$ auteur.php?code=$2 [L]
RewriteRule ^(.*)l([0-9]+)$ livre.php?code=$2 [L]
C'est astucieux, mais j'ai toujours mon erreur 403. :?

Posté : 20 juil. 2008, 15:14
par Cyrano
Je ne vois pas de règle "RewriteBase" dans ton code : autant en ligne ça peut fonctionner, autant le fait que tu aies plusieurs projets sur ton serveur WAMP pourrait donner lieu à une erreur ... mais je me goure peut-être à cause des alias paramétrés dans ton httpd.conf :-k

Posté : 20 juil. 2008, 15:45
par albat
C'est vrai mais je ne pense pas que cela vienne de là.
J'avais en effet testé en ajoutant le RewriteBase dans le .htaccess.

Par acquis de consience, je viens de le retester en incluant la ligne :
RewriteBase /projet3/
Mais... toujours cette "môditse" erreur 403 ! ;)

Posté : 20 juil. 2008, 20:14
par Sékiltoyai
L'url n'est pas déjà passée par un premier rewriting lorsque tes fichiers sont atteints ?

Re: Url-rewriting et wampserver 2

Posté : 27 juil. 2008, 22:36
par albat
Décidément, quand on a la poisse, on a la poisse... |*()

J'ai voulu poster ma demande d'aide sur le forum du site wampserver.com
et là, impossible de m'y inscrire : je ne reçois pas le mail d'activation. #-o :evil:

Je commence à désespérer... :cry:

-----

Petit récap :
Serveur : Wampserver 2.0 (Apache 2.2.8, PHP 5.2.6)
rewrite-module : activé
AddDefaultCharset UTF-8
Options +FollowSymlinks
RewriteEngine on
RewriteBase /projet3/
RewriteRule ^accueil.htm$ accueil.php [L]
RewriteRule ^collections.htm$ collections.php [L]
RewriteRule ^informations.htm$ informations.php [L]

RewriteRule ^(.*)a([0-9]+)$ auteur.php?code=$2 [L]
RewriteRule ^(.*)l([0-9]+)$ livre.php?code=$2 [L]
[Sat Jul 19 14:31:20 2008] [error] [client 127.0.0.1]
(20024)The given path misformatted or contained invalid characters:
Cannot map GET /projet3/blablabla-de-test.htm|a14 HTTP/1.1 to file
DocumentRoot "g:/wamp/www/"
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>

<Directory "g:/wamp/www/">
Options Indexes FollowSymLinks
AllowOverride all
# onlineoffline tag - don't remove
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
</Directory>
L'utilisation du | dans une URL étant parfaitement licite (recommandé sur WebRankInfo)
(et pis d'abord, ça fonctionne en prod), comment faire pour que WampServer l'accepte aussi ?

Posté : 28 juil. 2008, 06:52
par Victor BRITO
Sachant que | fait partie des caractères spéciaux, essaie de l'enfermer entre crochets, comme suit :

Code : Tout sélectionner

RewriteRule ^(.*)a([0-9]+)$ auteur.php?code=$2 [L] RewriteRule ^(.*)[|]([0-9]+)$ livre.php?code=$2 [L]

Posté : 28 juil. 2008, 08:49
par Cyrano
Je l'avais essayé aussi, mais ça n'a pas fonctionné chez moi non plus.

La question à poser serait : comment est configuré le serveur Apache en prod, question à laquelle bien entendu personne ne pourra répondre ici, il faudra demander à l'admin réseau qui l'a paramétré.

Posté : 28 juil. 2008, 08:56
par Sékiltoyai
Essaye de l'échapper : \|

Posté : 28 juil. 2008, 08:59
par Cyrano
marche pas non plus, et curieusement dans les logs d'Apache, le "\" était doublé, du coup le | n'était plus échappé et le message d'erreur indiqué dans le log indiquait une erreur dans le regexp. C'est un foutu casse-tête ce truc-là. Si je devais recommander quelque chose, ce serait de virer le pipe pour utiliser un autre signe, même si l'utilisation du pipe est valide, c'est trop de temps perdu pour une utilisation normale.

Posté : 28 juil. 2008, 09:41
par Sékiltoyai
Voire même reporter le bug, puisque cela m'a bien l'air d'en être un...