2010-03-16 82 views
1

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

所以我想我需要重写第一个URL“/ServiceSearch/r.php? n = blahblah“,然后第二个网址”/ search/blahblah /“,第三个,”r.php?n = ServiceSearch & n = blahblah“。

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

回答

1

嗯,我知道这是不对的

不,这其实正确的做法。像下面的东西应该工作:

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

这里,(.*)捕获可变部分(“blablabla”)并将其插入到经由$1更换。最后的标志表示第一个查询应该是HTTP重定向([R]),即客户端的浏览器将被指示重定向到该地址。而第二个重定向将是最后[L] - 它也是而不是 HTTP重定向,因为我们没有指定;重定向是在服务器端处理)。严格地说,[L]标志不是必需的,但如果您稍后添加更多重写规则,它将防止不必要的干扰。

+0

啊我明白了。这真的很有用:]。 但是我仍然有问题:[。 是否可以像[R = 301]一样执行301重定向? 此外,这是我现在的确切代码: RewriteRule /ServiceSearch/?profession=(.*)$/search/$ 1 [R = 301] RewriteRule /search/((*)$/r.php ?N = ServiceSearch&N = $ 1 [L] 它仍然保持所有地址: /ServiceSearch /职业=会计师和FTYPE =服务 同样的..是不是因为FTYPE =服务的?如果可能,我很高兴忽略这一点。 – 2010-03-16 10:25:26

+0

唉,评论不允许换行符:[ – 2010-03-16 10:25:58

+0

@Matthew:关于你的第一个问题:是的,这是绝对有可能的,你甚至有正确的语法。关于第二个问题:只需在'(。*)'部分后面删除'$'。但请注意,这会从查询中删除&ftype = service'部分。 – 2010-03-16 10:40:56