2009-02-20 3 views
3

Я пытаюсь получить Apache для перенаправления /a.php?a=123 к /б/123 (где 123 может быть любое число между 1 и 9999), но, похоже, не может заставить его работать.RewriteRule - a.php а = 123 в/б/123

Это то, что я имею в HTAccess:

RewriteEngine on 

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

С этим собирается A.php а = 123 результатов в 404, но будет только A.php работы, как ожидалось?. Я попытался убежать? (RewriteRule^a.php \? A = ([0-9] +)/b/$ 1 [L]), но он по-прежнему не работает.

Что я делаю неправильно, пожалуйста?

ответ

7

Строка запроса не является частью пути URI, который протестирован в директиве RewriteRule. Это можно проверить только с помощью RewriteCond директивы:

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

Но если вы хотите по-другому (запросы /b/123 переназначен на /a.php?a=123):

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

Спасибо вам это будет выглядеть, как она должна работать , но теперь, когда я перехожу к «a.php? a = 123» или просто «a.php», оба перенаправляют меня на/c/ – Tim

+0

. Сейчас это работает - я пропустил? в конце правила – Tim

Смежные вопросы