RewriteRule - a.php? A = 123 к / b / 123 - PullRequest
       7

RewriteRule - a.php? A = 123 к / b / 123

3 голосов
/ 20 февраля 2009

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

Вот что у меня есть в htaccess:

RewriteEngine on

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

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

Что я делаю не так, пожалуйста?

1 Ответ

7 голосов
/ 20 февраля 2009

Строка запроса не является частью пути 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]
...