Параметр в кодировке URL нарушает правила переписывания Zend по умолчанию - PullRequest
5 голосов
/ 03 февраля 2012

Я использую стандартный файл Zend /public/.htaccess (показанный ниже).

В данный момент я пытаюсь перенаправить пользователя на определенный контроллер / действие, и укажите URL-адрес при успешном перенаправлении в качестве параметра URL.

Результирующий URL-адрес (собранный и закодированный с помощью помощника Zend по просмотру URL-адресов) выглядит следующим образом:

localhost/crop/index/successRedirect/localhost%2Fprofile%2Fbasic

Однако этот шаблон явно нарушает стандартные правила Zend package mod_rewrite: доступ к URL приводит к стандартной ошибке Apache 404; Zend не получает запрос.

Когда конечный параметр вручную переформируется следующим образом, запрос работает следующим образом:

localhost/crop/index/?successRedirect=localhost%2Fprofile%2Fbasic

Однако для этого требуетсяхакерский двухэтапный процесс генерации URL.Было бы идеально, если бы URL, созданный помощником вида, работал независимо.

Что можно сделать, чтобы разрешить прохождение кодировки url? Любое понимание будет оценено!

Это содержимое моего .htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

Включение RewriteLog подобно тому, что не приводит к выводу неисправного шаблона:

RewriteLogLevel 9
RewriteLog "<path>/rewrite.log"

Я пытался найти решения, предложенныеследующие два вопроса и ответов без изменений:

1 Ответ

3 голосов
/ 03 февраля 2012

AllowEncodedSlashes On исправил это для меня, используя ваш точный тестовый URL. Однако согласно http://httpd.apache.org/docs/2.0/mod/core.html#allowencodedslashes, эта директива должна быть либо в конфигурации сервера, либо в vhost. это не работает в файле .htaccess.

Лично я бы пошел с решением для строки запроса. Не могли бы вы рассказать о том, что вы подразумеваете под этим двухэтапным процессом генерации URL? Я бы подумал, что синтаксис будет очень похож на использование обычного помощника URL.

...