0

几天来我一直在寻找解决方案,但找不到解决方案。帮助!

我已经安装了 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。同样的错误。

提前感谢您的帮助。

彼得

4

1 回答 1

0

它确实是 IIS8,我以前见过。但奇怪的是默认页面不适合你。尝试在 .htaccess 之上添加一条规则,例如:

RewriteRule ^$ /index.php [NC,L,NS]

于 2014-02-18T13:10:23.720 回答