如何设置别名或VirtualHost以在Apache2上运行laravel项目

如何设置别名或VirtualHost以在Apache2上运行laravel项目,laravel,laravel-5,routing,apache2,virtualhost,Laravel,Laravel 5,Routing,Apache2,Virtualhost,我开始学习如何在vps上设置灯,并尝试运行laravel项目 这是我的000-default.conf <VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/html Alias /laravelproject /var/www/laravelproject/public <Directory /var/www/> Options I

我开始学习如何在vps上设置灯,并尝试运行laravel项目

这是我的000-default.conf

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    Alias /laravelproject /var/www/laravelproject/public
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

服务器管理员webmaster@localhost
DocumentRoot/var/www/html
别名/laravelproject/var/www/laravelproject/public
选项索引跟随符号链接多视图
允许超越所有
命令允许,拒绝
通融
我尝试使用/laravelproject进行访问,它可以正常工作,因为我被重定向到登录页面ip/laravelproject/login(就像我为未登录的用户设置了中间件,它可以在本地homestead虚拟机上工作一样)。但我有一个404文件找不到的错误。这不是一个设计精美的laravel错误,而是一个原始而丑陋的服务器错误

找不到

在此服务器上找不到请求的URL/laravelproject/login

“”端口80上的Apache/2.4.10(Ubuntu)服务器

当然,我没有要设置的laravelproject.com域,我只想通过我的_server_ip/laravelproject访问它


如何设置virtualhost或别名以运行所有路由?

您需要确保将
/var/www/laravelproject/public
目录设置为
AllowOverride all
(我相信您已通过将
/var/www
设置为all来解决此问题)。然后确保
公用
目录中的
.htaccess
文件设置正确:

这是因为Apache正在查找不是文件的
/public/login/index.html
。Laravel的
.htaccess
会适当地重定向这些请求,但它必须位于您的公用文件夹中,Apache必须允许进行覆盖

编辑:


选项索引跟随符号链接多视图
允许超越所有

如果尚未启用,您也可以尝试启用apache mod rewrite

sudo a2enmod重写
sudo systemctl重新启动apache2

htaccess与您发布的相同。问题正是你说的。我试图用index.php在public中创建一个文件夹登录,这就是它加载的内容,请参见编辑。显然,公用文件夹不允许覆盖,所以将该代码放在apache配置中,并显式允许该文件夹。我尝试编辑/etc/apache2/apache2.conf的选项索引FollowSymLinks AllowOverride All required All allowed服务apache重启我想是的。现在我不确定我是否编辑了正确的文件,或者是否应该尝试在不同的conf文件上编写virtualhost,如果有人仍在寻找答案的话。SudoA2enmod rewrite修复了我的问题,我花了几个小时寻找它。所以这可能是你的解决方案。
<Directory /var/www/laravelproject/public>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
</Directory>