Переписать строку запроса - PullRequest
2 голосов
/ 07 августа 2009

У меня есть этот URL:

oldsite.com/profile.php?uid=10

Я хотел бы переписать его на:

newsite.com/utenti/10

Как я могу это сделать?

ОБНОВЛЕНИЕ : Я написал это:

RewriteCond %{QUERY_STRING} ^uid=([0-9]+)$
RewriteRule ^profile\.php$ http://www.newsite.com/utenti/$1 [R=301,L]

Но $ 1 соответствует полной строке запроса, а не только идентификатору пользователя.

Ответы [ 2 ]

5 голосов
/ 07 августа 2009

Чтобы использовать совпадения в условиях перезаписи, вы должны использовать% 1 вместо $ 1. Кроме того, если вы хотите удалить остальную часть строки запроса, вы должны добавить?

RewriteCond %{QUERY_STRING} ^uid=([0-9]+)$
RewriteRule ^profile\.php$ http://www.newsite.com/utenti/%1? [R=301,L]
2 голосов
/ 07 августа 2009

$n относятся только к совпадениям директивы RewriteRule. Используйте %n для ссылки на совпадения соответствующей директивы RewriteCond.

Дополнительно необходимо указать пустой запрос для замены. В противном случае будет использован исходный запрос.

И если вы хотите, чтобы остальная часть запроса оставалась неизменной, используйте это правило:

RewriteCond %{QUERY_STRING} ^(([^&]*&)*)uid=([0-9]+)(.*)
RewriteRule ^profile\.php$ http://new.example.com/utenti/%3?%1%4 [R=301,L]
...