htaccess QUERY_STRING urldecode - PullRequest
       8

htaccess QUERY_STRING urldecode

6 голосов
/ 30 августа 2011

У меня проблема с .htaccess и QUERY_STRING.

Я пытаюсь перенаправить URL с моим htaccess, который выглядит следующим образом:

http://mydomain.tld/out/http%3A%2F%2Fotherdomain.tld%3Fparam%3D0

до

http://otherdomain.tld?param=0

Я использую RewriteCond и RewriteRule с REQUEST_URI для перенаправления URL-адреса, и все работает отлично, так как REQUEST_URI по умолчанию url-кодируется в htaccess.

Однако, когда я отправляю ссылку на Hotmail по электронной почте, URL-адрес Hotmail кодирует косую черту и знак вопроса. Результат выглядит так:

http://mydomain.tld/out/http%3A//Fotherdomain.tld?param%3D0

Таким образом, htaccess берет ссылку и пытается ее перенаправить, но из-за вопросительного знака htaccess "думает", что все, что стоит за вопросительным знаком, является QUERY_STRING.

Проблема: apache2 не кодирует QUERY_STRING. Так что же происходит, что htaccess перенаправляет на

http://otherdomain.tld?param%3D0

, который потерпит неудачу.

Итак, мой вопрос:

Как я могу сказать htaccess либо urldecode QUERY_STRING, либо использовать полный запрошенный url (либо urlendcoded, либо urldecoded), включая часть после знака вопроса

Заранее спасибо!

Приветствия

1 Ответ

0 голосов
/ 08 июня 2012

Вам не нужно добавлять [QSA] в правило перезаписи, чтобы htaccess также кодировал строку запроса.

http://httpd.apache.org/docs/current/en/mod/mod_rewrite.html

...