几天来我一直在寻找解决方案,但找不到解决方案。帮助!
我已经安装了 Zend Framework 2.2 并实现了一个带有多个路由、控制器和视图的 MVC 应用程序。在我的开发系统上一切都很好。在本地,我使用 WAMP 安装。
我将所有内容都转移到了我的网络提供商(带有 Helicon Ape 的 IIS8),并让文字路由正常工作,例如 www.url.nl/info。
问题是标准路线 / 不起作用。我收到一条 Zend 404 错误消息,指出“请求的 URL 无法通过路由匹配”。
我在 module.config.php 中使用推荐的标准文字路由:
....
'home' => array(
'type' => 'Literal',
'options' => array(
'route' => '/',
'defaults' => array(
'controller' => 'App\Controller\Index',
'action' => 'index',
),
),
),
'info' => array(
'type' => 'Zend\Mvc\Router\Http\Literal',
'options' => array(
'route' => '/info',
'defaults' => array(
'controller' => 'App\Controller\Info',
'action' => 'index',
),
),
),
....
和一个不变的 public/.htaccess:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteCond %{REQUEST_URI}::$1 ^(/.+)(.+)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
RewriteRule ^(.*)$ %{ENV:BASE}index.php [NC,L]
我自己的怀疑是针对我在 IIS8.0 上使用 Helicon Ape 运行以支持 Apache 配置文件 (.htaccess) 的提供程序。特别是会生成一个 web.config 文件,其中包含 index.php 下的默认文件。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<directoryBrowse enabled="false" />
<defaultDocument>
<files>
<clear />
<add value="index.php" />
<add value="Default.htm" />
<add value="Default.asp" />
<add value="index.htm" />
<add value="index.html" />
<add value="iisstart.htm" />
<add value="default.aspx" />
</files>
</defaultDocument>
</system.webServer>
</configuration>
我也无法将完整的 url 直接用于 /index.php。同样的错误。
提前感谢您的帮助。
彼得