重写查询字符串
Posted
技术标签:
【中文标题】重写查询字符串【英文标题】:Rewrite Query String 【发布时间】:2010-11-17 17:01:41 【问题描述】:我有这个网址:
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 匹配完整的查询字符串,而不仅仅是用户 ID。
【问题讨论】:
【参考方案1】:要在重写条件中使用匹配项,您必须使用 %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]
【讨论】:
以上是关于重写查询字符串的主要内容,如果未能解决你的问题,请参考以下文章