我需要替换&的编码值。登录我的网址,以便搜索查询成功。我正在努力从这个post的解决方案中复制一个类似的方法,用于下面的查询字符串。
lovelakedistrict.com/result/?q=Brookfield+Bed+%2526+Breakfast
我希望它如此
lovelakedistrict.com/result/?q=Brookfield+Bed+&+Breakfast
原因是带有%2526的网址已在谷歌中编入索引并且显然已损坏。
答案 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)