我有这个URL:
oldsite.example/profile.php?uid=10
我想将其改写为:
newsite.example/utenti/10
我怎么能那样做呢?我写的是这样的:
RewriteCond %{QUERY_STRING} ^uid=([0-9]+)$ RewriteRule ^profile\.php$ http://www.newsite.example/utenti/$1 [R=301,L]
但是$1匹配完整的查询字符串,而不仅仅是用户id。
$1
yeotifhr1#
要在重写条件中使用匹配项,必须使用%1而不是$1。
%1
RewriteCond %{QUERY_STRING} ^uid=([0-9]+)$ RewriteRule ^profile\.php$ http://www.newsite.example/utenti/%1? [R=301,L]
0ejtzxu12#
$n 仅引用RewriteRule指令的匹配项。使用%n 可引用对应的RewriteCond指令的匹配项。此外,您需要为替换指定一个空查询。否则将使用原始查询。如果希望查询的其余部分保持不变,请使用以下规则:
$
n
RewriteRule
%
RewriteCond
RewriteCond %{QUERY_STRING} ^(([^&]*&)*)uid=([0-9]+)(.*) RewriteRule ^profile\.php$ http://newsite.example/utenti/%3?%1%4 [R=301,L]
2条答案
按热度按时间yeotifhr1#
要在重写条件中使用匹配项,必须使用
%1
而不是$1
。0ejtzxu12#
$
n
仅引用RewriteRule
指令的匹配项。使用%
n
可引用对应的RewriteCond
指令的匹配项。此外,您需要为替换指定一个空查询。否则将使用原始查询。
如果希望查询的其余部分保持不变,请使用以下规则: