2010-09-03 597 views
0

我需要替换我网址中的&符号的编码值,以便搜索查询成功。我正在努力从这个post的解决方案中复制类似的方法,查询字符串如下所示。&符号在url中编码为%2526

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

我希望它是像这样

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

原因是与%2526的网址在谷歌索引,显然是破碎的。

+3

它实际上应该是http://www.lovelakedistrict.com/result/?q=Brookfield+Bed+%26+Breakfast所以q'的'值为'布鲁克菲尔德床和Breakfast',喜欢这里:HTTP:/ /www.google.com/search?q=Brookfield+Bed+%26+Breakfast – aularon 2010-09-03 21:42:31

回答

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 S中的链接复制到26 S)

+0

我试过这个,但它连续造成3个加号,但我认为将所有的&更改为“and”更为常规。所以现在链接指向lovelakedistrict.com/result/?q=Brookfield+Bed+and+Breakfast。谢谢你的帮助 – AJFMEDIA 2010-09-06 07:23:37

2

正如aularon说,它应该是Bed+%26+Breakfast,为&是一个查询字符串参数分隔符。 (你会发现,如果你进入第二个链接你实际上搜索“布鲁克菲尔德床”。)

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

结果就像一个正确的查询:

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

然而,由于/result是Web服务器将该查询重定向到/result/,并由于某种原因同时更改查询字符串,将其双重编码为​​%2526

我不知道为什么这样做,这是不正常的Apache行为,有你有一些狡猾的重写规则,也许你应该能够指向正确的URL的形式,以避免它 - 但是:

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