2009-02-20 7 views
3

Je suis en train d'obtenir Apache pour rediriger /a.php?a=123 à /b/123 (où 123 pourrait être un nombre compris entre 1 et 9999) mais n'arrive pas à le faire fonctionner.RewriteRule - a.php a = 123/b/123

C'est ce que j'ai dans htaccess:

RewriteEngine on 

RewriteRule ^a.php?a=([0-9]+) /b/$1 [L] 
RewriteRule ^a.php$ /c/ [L] 

Avec cela va A.php a = 123 résultats dans 404, mais va fonctionne exactement A.php comme prévu?. J'ai essayé d'échapper à la? (RewriteRule^a.php \? A = ([0-9] +)/b/$ 1 [L]) mais cela ne fonctionne toujours pas.

Qu'est-ce que je fais de mal s'il vous plaît?

Répondre

7

La chaîne de requête ne fait pas partie du chemin URI testé dans la directive RewriteRule. Cela ne peut être testé avec une directive RewriteCond:

RewriteCond %{QUERY_STRING} ^a=([0-9]+)$ 
RewriteRule ^a\.php$ /b/%1? [L,R] 
RewriteCond %{QUERY_STRING} ^$ 
RewriteRule ^a\.php$ /c/ [L,R] 

Mais si vous le voulez dans l'autre sens (demandes de /b/123 sont redirigés vers /a.php?a=123):

RewriteRule ^b/([0-9]+)$ a.php?a=$1 [L] 
+0

Merci cela ne semble que cela devrait fonctionner , mais maintenant quand je vais soit "a.php? a = 123" ou juste "a.php" les deux me redirigent vers/c/ – Tim

+0

Cela fonctionne maintenant - j'avais manqué le? à la fin de la règle – Tim

Questions connexes