mod_rewrite [P] + urls dynamiques

Nouveau WRInaute
Bonjour,

Je rencontre des difficultés à associer les fonctionnalités de rewrite d'URLs dynamiques (exemple : de proxyserver/cartographie-expertne?expert=345 à proxyserver/cartographie-expertne/expert/345) et de proxy (proxyserver devant machineproduction).

Mon fichier httpd.conf est configuré comme suit :

<VirtualHost proxyserver>
<IfModule mod_rewrite.c>
ServerName proxyserver
Options +FollowSymLinks
RewriteEngine On
RewriteLog /tmp/rewrite_log
RewriteLogLevel 9
RewriteRule cartographie-expertne/(\.*)/(\.*)/$ /cartographie-expertne?$1=$2
RewriteRule ^/(.*) http://productionmachine/experfree/fr/$1 [P]
ProxyPassReverse / http://productionmachine/experfree/fr/
CustomLog /tmp/apache_acces_fr.log common
</IfModule>
</VirtualHost>

Le proxy fonctionne mais la réécriture n'a pas lieu (dans le log, le premier pattern n'est pas appliqué).

Auriez-vous une idée de ce qui peut poser problème ?

Merci.
 
WRInaute occasionnel
Il ya peut être quelque chose qui m'échappe, mais en l'état la règle
Code:
RewriteRule cartographie-expertne/(\.*)/(\.*)/$ /cartographie-expertne?$1=$2

ne peut trouver une correspondance qu'avec une URL de type cartographie-expertne/..../..../ où les points sont vraiment des points puisque \. force des points et non un caractère quelconque. Pour cartographie-expertne/expert/345,
Code:
RewriteRule cartographie-expertne/([^\/]+)/([^\/]+)$ /cartographie-expertne?$1=$2
devrait fonctionner mieux.
 
Nouveau WRInaute
Bonjour,

Tout d'abord, merci pour votre réponse.

J'ai modifié le fichier httpd.conf comme vous me l'avez proposé.

J'obtiens alors le log suivant :

(2) init rewrite engine with requested uri /cartographie-expertne
(3) applying pattern 'cartographie-expertne/([^\/]+)/([^\/]+)$' to uri '/cartographie-expertne'
(3) applying pattern '^/(.*)' to uri '/cartographie-expertne'
(2) rewrite /cartographie-expertne -> http://productionmachine/cartographie-expertne
(2) forcing proxy-throughput with http://productionmachine/cartographie-expertne
(1) go-ahead with proxy request proxy:http://productionmachine/cartographie-expertne [OK]

La première règle (réécriture de l'URL dynamique) est ignorée.
La seconde (proxy) est prise en compte. Or, je souhaiterais que ces deux règles soient combinées. Le résultat est actuellement : http://proxyserver/cartographie-expertne?expert=345. J'aimerais obtenir http://proxyserver/cartographie-expertne/expert/345.

Merci de votre aide.
 
WRInaute occasionnel
Qu'on soit d'accord : le but est de réécrire
Code:
/cartographie-expertne?expert=345
en
Code:
/cartographie-expertne/expert/345
? J'avais compris le contraire (le cas qui est en général souhaité et ce que vous faisiez dans la conf proposée). Si j'ai bien compris cette fois, alors peut-être que

Code:
RewriteCond   %{REQUEST_URI} ^/cartographie-expertne$
RewriteRule   ^(.+)$      %{QUERY_STRING}          [C]
RewriteRule   ^([^=]+)=(.*)$ /cartographie-expertne/$1/$2
fera l'affaire. C'est éventuellement à modifier pour le faire fonctionner correctement avec le proxy.
 
Nouveau WRInaute
Bonjour,

Il s'agissait bien de réécrire :

Code:
/cartographie-expertne/expert/345

en :

Code:
/cartographie-expertne?expert=345

En fait, nous avions un problème avec notre feuille de style qui prévoyait un url de type /cartographie-expertne?expert=345 au lieu de /cartographie-expertne/expert/345. Ce point est maintenant résolu.

Merci de votre aide.
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut