.htaccess重定向替换&用搜索签名

时间:2012-06-05 21:12:03

标签: .htaccess redirect replace

RedirectMatch 301 /out/link http://www.link.com/?getparam1=something&getparam2=somethingelse&getparam3=more

当你点击mysite.com/out/link时,它会转到:

http://www.link.com/?getparam1=something/out/linkgetparam2=somethingelse/out/linkgetparam3=more

基本上它取代了&使用/ out / link部分对http'get'参数进行签名

2 个答案:

答案 0 :(得分:1)

可能尝试使用B标志

  

在应用转换之前转义非字母数字字符。

所以你会的     RedirectMatch 301 / out / link http://www.link.com/?getparam1=something&getparam2=somethingelse&getparam3=more [B]

答案 1 :(得分:1)

万一你绝对想避免逃避所有的&符号&: 如果您编写RewriteRule而不是RedirectMatch指令,则查询中的&符号将不会被整个匹配($ 0)替换。

因此,下两行对用户来说是相同的:(注意第二行有一个未转义的&

RedirectMatch ^/product-id/(.*) http://www.example.com/?foo=bar\&product_id=$1 
RewriteRule   ^/product-id/(.*) http://www.example.com/?foo=bar&product_id=$1 [R=301]

如果您希望用户看到右侧URI,请使用指示的[R]标志。如果省略该标志,将向用户显示左侧URI(通常是更精细的URI,因此您可能不需要该标志)。

它的行为方式相同,但可能性能较差(google RedirectMatch vs. RewriteRule),以提高性能。请记住,所有这些正则表达式规则都会针对您的网络服务器上的每个请求进行评估。