Строка index.php?foo=true&bar=false
, когда она используется в качестве значения атрибута, расшифровывается браузером как index.php?foo=true&bar=false
.
Итак, нажав на эту ссылку:
<a href="index.php?foo=true&bar=false">Hello</a>
Переходит кindex.php?foo=true&bar=false
, а не index.php?foo=true&bar=false
.
Это связано с тем, что &
- это специальный символ в HTML, а &
- это способ его кодирования для удаления его специального значения.
На самом деле неправильно писать <a href="index.php?foo=true&bar=false">
и совершенно правильно писать <a href="index.php?foo=true&bar=false">
.
Если jQuery читает его неправильно, в jQuery должна быть ошибка, или вы что-то делаете неправильно.
Если у вас есть тонны пользователей, использующих запросы к index.php?foo=true&bar=false
, вы можете переписать запрос следующим образом:
RewriteCond %{THE_REQUEST} ^(GET|HEAD) (.*)&(.*) HTTP/[\d.]+$
RewriteRule %2&%3 [R]
(с использованием RewriteCond и сопоставлением на% {THE_REQUEST}, поскольку RewriteRuleне будет совпадать в строке запроса.)
Это перенаправит пользователя на URL с &
, декодированным в &
.Если есть несколько &
, будет несколько перенаправлений.