Laravel在Apache虚拟主机中的所有路由上显示404

时间:2016-02-09 14:15:22

标签: apache .htaccess laravel

我有两个laravel应用程序,我希望放在一个实时的Apache服务器上。操作系统是CentOs。我已经按照这个设置来设置虚拟主机:https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-centos-7

当我尝试访问我的链接http://lara.ci/public/时,我得到的全部是404 Not Found。以下是我的网站可用文件:

<VirtualHost *:80>

    ServerName www.lara.ci
    ServerAlias lara.ci
    DocumentRoot /var/www/lara.ci/public_html/public
    ErrorLog /var/www/lara.ci/error.log
    CustomLog /var/www/lara.ci/requests.log combined
</VirtualHost>

该应用的文件位于public_html文件夹中。我甚至在搜索了所有方法之后尝试了以下方法,但无法让它工作:

在httpd.conf中设置以下内容

<Directory />
AllowOverride All
</Directory>

我公开的.htaccess文件似乎正在工作,因为当我尝试下面的内容时,我得到重定向。还启用了mod_rewrite:

<IfModule mod_rewrite.c>
Redirect 301 / https://google.com
...

赞赏协助

3 个答案:

答案 0 :(得分:0)

是否正确,即使您的document_root已指向公共子文件夹,您仍将转到http://lara.ci/public

答案 1 :(得分:0)

问题在于您将文档根指向:

DocumentRoot /var/www/lara.ci/public_html/public

应该是:

<VirtualHost *:80>
  ServerName www.lara.ci
  ServerAlias lara.ci
  DocumentRoot /var/www/lara.ci/public_html
  ErrorLog /var/www/lara.ci/error.log
  CustomLog /var/www/lara.ci/requests.log combined
</VirtualHost>

答案 2 :(得分:0)

在挖掘之后,我意识到我的隐藏文件没有复制,例如.env,.gitignore等,因为我使用cp命令来复制我的文件。为了解决这个问题,我运行了如下命令(来源:https://superuser.com/questions/61611/how-to-copy-with-cp-to-include-hidden-files-and-hidden-directories-and-their-con):

cp -r /var/www/html/lara/.[^.]* /var/www/lara.ci/public_html有效地复制了所有隐藏文件,一切运行顺利。