Перепишите index.php? Foo = bar & bar = foo в index.php? Foo = bar & bar = foo - PullRequest
0 голосов
/ 17 сентября 2011

Я использую jQuery Mobile, и это в основном хорошо. Хотя есть несколько ошибок.

Например; Я вставил свой HTML & вместо &, как вы и предполагали. jQuery не читает его должным образом, и когда он показывает это в URL-адресе, вместо & отображается значение &.

Например

<a href="index.php?foo=true&amp;bar=false">Hello</a>

Это перейдет к

 example.com/index.php?foo=true&amp;bar=false

когда это действительно должно перейти к

 example.com/index.php?foo=true&bar=false

Это действительно раздражает, и я использую много из них, поэтому я не могу написать .htaccess вручную, потому что все переменные get меняются, и это будет очень длинный файл, который я написал для каждого возможного foo и bar.

У меня такой вопрос: существует ли быстрый способ для сервера apache исправить &amp; на &?

1 Ответ

0 голосов
/ 17 сентября 2011

Строка index.php?foo=true&amp;bar=false, когда она используется в качестве значения атрибута, расшифровывается браузером как index.php?foo=true&bar=false.

Итак, нажав на эту ссылку:

<a href="index.php?foo=true&amp;bar=false">Hello</a>

Переходит кindex.php?foo=true&bar=false, а не index.php?foo=true&amp;bar=false.

Это связано с тем, что & - это специальный символ в HTML, а &amp; - это способ его кодирования для удаления его специального значения.

На самом деле неправильно писать <a href="index.php?foo=true&bar=false"> и совершенно правильно писать <a href="index.php?foo=true&amp;bar=false">.


Если jQuery читает его неправильно, в jQuery должна быть ошибка, или вы что-то делаете неправильно.

Если у вас есть тонны пользователей, использующих запросы к index.php?foo=true&amp;bar=false, вы можете переписать запрос следующим образом:

RewriteCond %{THE_REQUEST} ^(GET|HEAD) (.*)&amp;(.*) HTTP/[\d.]+$
RewriteRule %2&%3 [R]

(с использованием RewriteCond и сопоставлением на% {THE_REQUEST}, поскольку RewriteRuleне будет совпадать в строке запроса.)

Это перенаправит пользователя на URL с &amp;, декодированным в &.Если есть несколько &amp;, будет несколько перенаправлений.

...