2009-08-07 3 views
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 матч полной строки запроса, а не только идентификатор пользователя.

ответ

5

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

 
RewriteCond %{QUERY_STRING} ^uid=([0-9]+)$ 
RewriteRule ^profile\.php$ http://www.newsite.com/utenti/%1? [R=301,L] 
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] 
Смежные вопросы