& символ, закодированный в% 2526 в URL - PullRequest
0 голосов
/ 04 сентября 2010

Мне нужно заменить закодированное значение для знака & в моем URL, чтобы поисковый запрос был успешным. Я изо всех сил пытаюсь скопировать подобный метод из решения в этой записи для строки запроса, такой как ниже.

lovelakedistrict.com / результат /? Д = Брукфилд + кровать +% 2526 + завтрак

Я хочу, чтобы это было так

lovelakedistrict.com / результат /? Д = Брукфилд + кровать + & + завтрак

Причина в том, что URL с% 2526 проиндексирован в google и явно не работает.

Ответы [ 2 ]

2 голосов
/ 04 сентября 2010

Как сказал aularon, это должно быть Bed+%26+Breakfast, так как & является разделителем параметров строки запроса.(Вы заметите, если перейдете по второй ссылке, которую вы на самом деле ищете в «Брукфилд Кровать».)

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

Результат в правильном запросе, например:

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

Однако, поскольку /result является папкой, веб-сервер перенаправляет этот запрос на /result/ и по какой-то причине одновременно изменяет строку запроса, дважды кодируя ее как %2526.

Я не знаю, почему это происходит, это не нормальное поведение Apache - возможно, у вас есть какие-то хитрые правила переписывания? - но вы должны быть в состоянии избежать этого, указав форму на правильный URL:

<form id="form" action="/result/" method="get">
1 голос
/ 04 сентября 2010
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 с)

...