У меня есть этот 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