Назад | Перейти на главную страницу

Переписать строку запроса

У меня есть этот 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 соответствует полной строке запроса, а не только идентификатору пользователя.

«$ 1» соответствует первой паре скобок в той же строке (RewriteRule); вам нужен "% 1", который соответствует первой паре скобок в строке / previous / - RewriteCond:

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

Лучшим способом было бы сделать это только с одной строкой (RewriteRule), но вы не можете этого сделать, если uid находится в QueryString.

<IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{SERVER_NAME} ^oldsite.com$
        RewriteCond %{QUERY_STRING} uid=([0-9]+)
        RewriteRule ^/profile\.php http://newsite.com/utenti/%1 [NC,R=301,L]
</IfModule>

суть в том, чтобы использовать% 1, а не $ 1