2009-02-20 9 views
1

Salut tout j'ai besoin d'un peu d'obtenir une redirection fonctionnant dans mod_rewrite.mod_rewrite - ancien nom de paramètre à nouveau nom

J'ai besoin de rediriger les éléments suivants

http://mysite.com/dictionary/find?word=test 

à

http://mysite.com/dictionary/find?w=test 

Je suis sûr que la solution est assez trivial, mais ma connaissance des expressions mod_rewrite et régulières est assez limité et je n'ai pas été capable de travailler. C'est ce que j'ai essayé jusqu'ici en vain.

RewriteCond %{QUERY_STRING} word= [NC] 
RewriteRule ^/(.*)word=(\w+)/$ /w=$1 [L] 

Toute aide serait grandement appréciée. Merci.

+0

Vous voulez 2 – kmkaplan

Répondre

2

Cela devrait être suffisant pour vous ...

RewriteRule (|? &) mot = (\ w +) $ 2 = 1 W

$

ce remplacera même si combiné à d'autres tentatives parameters.Your pour traiter uniquement la chaîne de requête est intéressant, je n'ai jamais utilisé cela et je ne peux pas répondre si c'est possible.

En sidenote, allumez:

RewriteLog "/var/log/apache2/rewrite.log"
RewriteLogLevel 2

des commentaires plus utiles.

+0

$ Merci pour votre aide jishi J'ai essayé votre RewriteRule mais je reçois l'erreur suivante en essayant de démarrer Apache avec elle en place RewriteRule: impossible de compiler l'expression régulière '(? | &) word = (\\ w +)' La barre oblique inverse supplémentaire n'est pas une erreur de ma part, elle est simplement imprimée de cette façon. –

+0

Juste pour que je sois clair, l'erreur complète est: Erreur de syntaxe sur la ligne 2 de /data/home/user/web/conf/rewrite.conf: RewriteRule: impossible de compiler l'expression régulière '(? | &) Query = (\\ w +) ' –

+0

hm vous pourriez avoir besoin d'échapper le?, (\? | &) – jishi

0

Essayez ceci:

RewriteCond %{QUERY_STRING} ^(([^&]*&)*)word=(.*) 
RewriteRule ^dictionary/find$ $0?%1w=%3 [R=301,L]