.htaccess,连续两次重写?

时间:2010-03-16 10:13:21

标签: .htaccess

我需要一个网址“/ServiceSearch/r.php?n=blahblah”,并将其转到“/ search / blahblah /”,以便它在浏览器中显示为“/ search / blahblah”,但我真的希望它真的要去“r.php?n = ServiceSearch& n = blahblah”..

所以我想我需要将第一个URL重写为“/ServiceSearch/r.php?n=blahblah”,然后将第二个URL“/ search / blahblah /”改写为第三个,“r。 PHP N = ServiceSearch&安培; N = blahblah”

嗯,我知道这是错的,但这是我最好的猜测。我真的很挣扎。

1 个答案:

答案 0 :(得分:1)

  

嗯,我知道这是错的

不,这实际上是正确的方式。以下内容应该有效:

RewriteRule /ServiceSearch/r.php?n=(.*)$ /search/$1 [R]
RewriteRule /search/(.*)$ /r.php?n=ServiceSearch&n=$1 [L]

此处,(.*)捕获变量部分(“blablabla”)并通过$1将其插入替换中。最后的标志意味着第一个查询应该是HTTP重定向([R]),即将指示客户端的浏览器重定向到该地址。并且第二个重定向是 last [L] - 它也是HTTP重定向,因为我们没有指定;相反,重定向是在服务器端处理)。严格来说,[L]标志不是必需的,但如果您以后添加更多重写规则,它将防止不必要的干扰。