在iis6上的Zend应用程序问题

时间:2011-05-06 14:57:17

标签: zend-framework iis-6 windows-server-2003

当我在我的应用程序中传递http://localhost/home/index/index之类的网址时,我获得了模块=>默认值,controller => index,action => index。无论URL是什么,我都会得到同样的东西。我在Windows 2003平台上运行IIS6上的应用程序。如果我在Zend_Controller_Request_Abstract => getModuleName()方法中将模块覆盖为“home”,那么我的主页就可以了。我无法确切地将它的值覆盖为'default','index','index'。任何人都可以帮助我吗?

提前致谢

更新: 问题出在$ _SERVER ['HTTP_X_REWRITE_URL']上。我在$ _SERVER ['HTTP_X_REWRITE_URL']和$ _SERVER ['REQUEST_URI']中获得相同的URI,如/public_mvc/index.php。我没有在代码中的任何地方覆盖$ _SERVER ['HTTP_X_REWRITE_URL']的值。我的.htaccess代码是这样的。

上的RewriteEngine

RewriteRule ^ admin-mvc(。*)$ public_mvc / admin.php [L]

RewriteCond%{REQUEST_FILENAME} -s [OR]

RewriteCond%{REQUEST_FILENAME} -l [OR]

RewriteCond%{REQUEST_FILENAME} -d

RewriteRule ^ [\ w / \%] (?:。(?!(?:js | ico | gif | jpg | png | css | html)$)[\ w \%] $)? public_mvc / index.php [I]

RewriteRule ^ $ / home [r = 301,nc]

我正在使用ISAPI Rewrite 3进行URL重写。

1 个答案:

答案 0 :(得分:0)

这是Zend Framework处理“默认”模块的方式。

您可以像这样访问您的根路径:

  • 使用domain.tld /
  • 使用domain.tld /索引
  • 使用domain.tld /索引/索引
  • 使用domain.tld /默认/索引/索引

所有请求都将导致

  • 模块:默认
  • 控制器:索引
  • 操作:索引

更新1:

可能存在模块 home 配置的静态路由

发送

的请求
  • /家 /索引/索引

  • /默认 /索引/索引

更新2:

确保按照此处的说明安装了Isapi_Rewrite(搜索IIS):

更新3:

将此回归规则添加到.htaccess(如 Update 2 的Zend文章中所示):

RewriteRule ^[\w/\%]*(?:\.(?!(?:js|ico|gif|jpg|png|css|html)$)[\w\%]*$)? /index.php [I]

更新4: 在.htaccess中尝试以下代码(这是Zend文章 Update 2 的建议)

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
RewriteRule ^[\w/\%]*(?:\.(?!(?:js|ico|gif|jpg|png|css|html)$)[\w\%]*$)? /index.php [I]

如果这不起作用,我不确定解决方案是什么。我没有使用IIS,也不熟悉那里的特殊性......