重写查询字符串

重写查询字符串

我有这个网址:

oldsite.com/profile.php?uid=10

我想将其重写为:

newsite.com/utenti/10

我怎样才能做到这一点?

我写了这个:

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

但是$1 匹配完整的查询字符串而不仅仅是用户 ID。

答案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 中,则无法这样做。

答案2

<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

相关内容