&安培;在url中编码为%2526的符号

时间:2010-09-03 21:31:03

标签: apache url .htaccess encoding rewrite

我需要替换&的编码值。登录我的网址,以便搜索查询成功。我正在努力从这个post的解决方案中复制一个类似的方法,用于下面的查询字符串。

lovelakedistrict.com/result/?q=Brookfield+Bed+%2526+Breakfast

我希望它如此

lovelakedistrict.com/result/?q=Brookfield+Bed+&+Breakfast

原因是带有%2526的网址已在谷歌中编入索引并且显然已损坏。

2 个答案:

答案 0 :(得分:2)

正如aularon所说,它应该是Bed+%26+Breakfast,因为&是一个查询字符串参数分隔符。 (您会注意到,如果您按照第二个链接实际搜索“Brookfield Bed”。)

<form id="form" action="/result" method="get">

产生正确的查询,例如:

http://www.lovelakedistrict.com/result?q=Brookfield+Bed+%26+Breakfast

但是,由于/result是一个文件夹,因此Web服务器会将该查询重定向到/result/,并且由于某种原因同时更改查询字符串,将其重复编码为{{1} }。

我不知道为什么会这样做,这不是正常的Apache行为 - 你有没有一些狡猾的重写规则? - 但是你应该能够通过将表单指向正确的URL来避免它:

%2526

答案 1 :(得分:1)

RewriteCond %{QUERY_STRING} (.*?)%(25)+26(.*?%(25)+26.*)
RewriteRule ^ %{REQUEST_URI}?%1+%3 [N]
RewriteCond %{QUERY_STRING} (.*?)%(25)+26(.*)
RewriteRule ^ %{REQUEST_URI}?%1+%3 [L,R=301]

(从您发布的链接中复制20更改为26 s)