Вопрос по mod-rewrite, query-string, apache – Переписать строку запроса

2

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

oldsite.com/profile.php?uid=10

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

newsite.com/utenti/10

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

UPDATEЯ написал это:

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

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

Ваш Ответ

2   ответа
2

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

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

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

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

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

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

Похожие вопросы