Php 使用Apache的ZF2:在远程浏览器上路由到我的模块时出现问题

Php 使用Apache的ZF2:在远程浏览器上路由到我的模块时出现问题,php,apache,.htaccess,zend-framework,zend-framework2,Php,Apache,.htaccess,Zend Framework,Zend Framework2,我正在使用ZF2开始我的第一步。我做了一个书中描述的简单应用程序 我在第2章-行动时间-创建模块上编写了代码。此模块提供一个名为User的简单模块和3个操作:indexAction()、registerAction()和loginAction()。这些操作只需导航到其他操作,只需调用$view->setTemplate('users/index/login')调用即可 我在服务器上的VM中使用Ubuntu,Apache 2.4.12 Ubuntu作为web服务器,并将项目文件复制到/var/ww

我正在使用ZF2开始我的第一步。我做了一个书中描述的简单应用程序

我在第2章-行动时间-创建模块上编写了代码。此模块提供一个名为
User
的简单模块和3个操作:
indexAction()
registerAction()
loginAction()
。这些操作只需导航到其他操作,只需调用
$view->setTemplate('users/index/login')
调用即可

我在服务器上的VM中使用Ubuntu,Apache 2.4.12 Ubuntu作为web服务器,并将项目文件复制到
/var/www/html/myproject
文件夹。我在Apache中还有一些其他项目,都在“/var/www/html/”文件夹下

如果我在服务器上本地使用Mozilla,一切正常。我可以导航到我的简单模板应用程序的所有页面

当我从局域网内的笔记本电脑访问这些页面时,我的问题就出现了。当我呼叫
http://192.168.0.180/myapp/public
它加载ZF2欢迎页面。通过调用
http://192.168.0.180/myapp/public/user
我获得了myapp用户模块
索引
页面,正如预期的那样。当我点击按钮时,问题就出现了。我在
http://192.168.0.180/user/index/user
第页

同样,如果在服务器上导航,则不会发生这种情况

更多信息:

index.phtml

    <h1>Welcome to users module</h1>

<a href="/user/index/login">Login</a> | <a href="/user/index/register">New user registration</a>

请帮助解决此问题。

问题在于您的apache vhost配置。您提供的目录错误(
/var/www/html/myproject
)。您应该提供
公用
文件夹,而不是根项目文件夹

您现在必须按如下方式请求用户页面:

http://192.168.0.180/myapp/public/user
/var/www/html/myproject/myapp/public
这是错误的,url应该是:

http://192.168.0.180/user
更改vhost配置,以便像这样为公共目录提供服务:

http://192.168.0.180/myapp/public/user
/var/www/html/myproject/myapp/public

在您的视图中,尝试:$this->url('module-name-here/default',['controller'=>'yourController','action'=>'yourAction']);对不起,我还不完全熟悉ZF2。我的视图仅包含
.phtml
文件。。。我到底需要在哪里试一试?感谢您的详细说明……有没有不使用vHost的方法?请记住,我确实有其他由Apache提供服务的web项目不使用ZF2。@Mendes您可以轻松地为所有web项目配置多个vHost。也许您应该阅读一下如何配置apache服务器?例如,检查如何在一个IP地址上为多个网站提供服务。使用多个虚拟主机,如何访问我的ZF2项目?
192.168.0.180/user
有效吗?使用vhosts可以更容易地将ZF2项目与其他项目分开。将
/var/www/html/myproject
移动到
/var/www/myproject
,然后按照安装说明设置vhost:@Mendes Yes,如果配置正确,它将正常工作,但也可以分配不同的路径。这完全取决于您以及如何配置apache服务器。有很多关于如何做到这一点的信息。
/var/www/html/myproject/myapp/public