2009-03-10 2 views
0

Ok, ayez un client qui a des liens existants venant de searchmarketing. Je suis en train de migrer le programme de Cold Fusion vers PHP.Autres problèmes de Mod_rewrite

RewriteEngine on 
RewriteRule ^cat_ap~([^~]+)~(.*)\.htm$ /urban/cat_ap.php?$1=$2 [R] 

Actuellement, j'ai une structure d'URL:

http://www.test.com/urban/cat_ap~nid~5964.htm 

que les modifications des règles de réécriture ci-dessus pour

http://www.test.com/urban/cat_ap.php?nid=5964 

Maintenant, je veux être en mesure d'obtenir les variables de la chaîne de requête mais maintenez l'URL dans le navigateur à l'original http://www.test.com/urban/cat_ap~nid~5964.htm mais l'avoir toujours aller à la page PHP.

Donc, quand quelqu'un va à http://www.test.com/urban/cat_ap~nid~5964.htm, il va effectivement à http://www.test.com/urban/cat_ap.php?nid=5964 mais montre encore http://www.test.com/urban/cat_ap~nid~5964.htm.

Des idées sur comment faire cela?

Merci

Mike

Répondre

0

Vous faites déjà cela sur cette ligne (mais changer le drapeau de R à L):

RewriteRule ^/urban/cat_ap~([^~]+)~(.*).htm$ /urban/cat_ap.php?$1=$2 [L] 

L'URL que l'utilisateur clique montreront encore comme Version .htm pendant que le serveur la traite comme .php

+0

L'indicateur R redirige l'utilisateur vers la nouvelle URL. $ 1 dans le RewriteRule d'origine serait le nom du nom de la variable, alors que votre RewriteRule révisé définit cette valeur comme étant une valeur Mike spécifie l'exemple de nid = 5964 – alastairs

0

Le R flag induit explicitement une redirection externe. Il suffit donc de retirer le drapeau R.

0

Je pense que vous devrez configurer le proxy inverse pour obtenir le comportement souhaité, et utiliser l'indicateur P avec vos règles de réécriture. J'ai déjà utilisé un site avec ce type de configuration, donc je peux dire que ça marche, mais je crains de ne jamais l'avoir configuré moi-même :-(

Un bon premier pas au moins serait d'installer mod_proxy Le mod_rewrite cookbook page on the P flag contient une petite quantité de détails sur les RewriteRules proxy, et des liens vers la documentation de la directive ProxyPassReverse sur apache.org