我正在使用标准的Zend /public/.htaccess
文件(如下所示)。
目前我正在尝试转发用户到特定控制器/操作,而提供成功重定向URL作为URL参数。 < / p>
生成的URL(通过Zend的URL视图助手组装和编码)如下所示:
localhost/crop/index/successRedirect/localhost%2Fprofile%2Fbasic
然而,这种模式显然违反了默认的Zend包mod_rewrite规则:访问URL会产生标准的Apache 404错误; Zend未收到请求。
当按如下方式手动重新形成最终参数时,请求将按预期工作:
localhost/crop/index/?successRedirect=localhost%2Fprofile%2Fbasic
然而,这需要一个hackish,两步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"
我尝试过以下两个Q&amp; A提出的解决方案,没有变化:
AllowEncodedSlashes On
)QSA
指令进行重写规则)答案 0 :(得分:3)
AllowEncodedSlashes On
使用您的确切测试网址为我修复此问题。但是,根据http://httpd.apache.org/docs/2.0/mod/core.html#allowencodedslashes,此指令需要位于服务器配置或vhost中。它在.htaccess文件中不起作用。
我个人会选择查询字符串解决方案。你能扩展一下两步URL生成过程的意思吗?我原以为语法与使用普通的URL帮助器非常类似。