-1

我已经构建了一个 Zend Framework 应用程序。通过将其配置为读取routes.ini文件,部署后我的应用程序不会进入任何路由,而只有默认路由正在工作。我在这个应用程序中总共有 4 条路线,但它们都不起作用。Apache 显示Not Found错误。

我看过.htaccess文件,它是完美的,在我的本地它工作正常。我还检查了权限。它对www-data. 我还检查了 Apache URL 重写模块。

我再次这样做并尝试了:

sudo a2enmod rewrite

还是同样的问题。

我的 apache 错误日志显示该文件不存在。
请告诉我哪里出错了。

4

2 回答 2

1

经过几个小时的研究,我注意到 apache vhost 文件中有一个非常小的和敏感的错误。

我的条目是这样的

<Directory /var/www/your_project>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

但实际上我的条目应该是按照mssb一些这样的

<Directory /var/www/your_project>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory

由于我不是经验丰富的网站管理员,我没有注意到一个简单的事情,即 AllowOveride 选项设置为 None

我今天参考了 Core apace 文档,以便找出我错在哪里。

不选择 .htaccess 文件的原因如下

当 AllowOveride 指令设置为 None 时,.htaccess 文件将被完全忽略。在这种情况下,服务器甚至不会尝试读取文件系统中的 .htaccess 文件。

当此指令设置为 All 时,任何具有 .htaccess 上下文的指令都可以在 .htaccess 文件中使用。

我个人觉得发布这个问题的整个解决方案,以帮助将来可能面临类似问题的其他人

再次感谢大家对这篇文章的回复

于 2012-09-07T15:39:48.690 回答
0

尝试按照以下步骤进行 mod_rewrite

sudo ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/

sudo gedit /etc/apache2/sites-enabled/000-default

添加以下代码

<Directory /var/www/your_prject_name>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all
    Order allow,deny
    allow from all
    # This directive allows us to have apache2's default start page
    # in /apache2-default/, but still have / go to the right place
    # Commented out for Ubuntu
    #RedirectMatch ^/$ /apache2-default/
 </Directory>

然后重启服务器

sudo /etc/init.d/apache2 restart
于 2012-09-07T06:40:09.330 回答