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

Posted

技术标签:

【中文标题】如何设置别名或 VirtualHost 以在 Apache2 上运行 laravel 项目【英文标题】:How to set Aliases or VirtualHost to run a laravel project on Apache2 【发布时间】:2016-07-08 08:34:57 【问题描述】:

我开始学习如何在 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>

我正在尝试使用 /laravelproject 访问它,因为我被重定向到登录页面 ip/laravelproject/login )。但我得到一个 404 文件未找到错误。不是一个设计精美的 laravel,而是一个原始且丑陋的服务器错误

找不到

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

Apache/2.4.10 (Ubuntu) 服务器在 '' 端口 80

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

如何设置虚拟主机或别名以在所有路由都正常运行的情况下运行它?

【问题讨论】:

如果有人仍在为此寻找答案。 sudo a2enmod rewrite 解决了我的问题,我花了几个小时寻找它。所以这可能是你的解决方案。 【参考方案1】:

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

sudo a2enmod rewrite
sudo systemctl restart apache2

【讨论】:

【参考方案2】:

您需要确保将/var/www/laravelproject/public 目录设置为AllowOverride All(我相信您已经通过将/var/www 设置为All 来解决此问题)。然后确保您的public 目录中的.htaccess 文件设置正确:https://github.com/laravel/laravel/blob/master/public/.htaccess

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

编辑:

<Directory /var/www/laravelproject/public>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
</Directory>

【讨论】:

.htaccess 与您发布的相同。问题正是你所说的。我尝试使用 index.php 在公共内部创建一个文件夹登录名,这就是它加载的内容 OK 查看编辑。显然公用文件夹不允许覆盖,因此将该代码放在 apache 配置中并明确允许该文件夹。 我试图编辑 /etc/apache2/apache2.conf ' 选项索引 FollowSymLinks AllowOverride All 要求全部授予 AllowOverride All ' 你后来重启了apache吗? service apache restart我认为 当然。现在我不确定我是否编辑了正确的文件,或者我是否应该尝试在不同的 conf 文件上编写虚拟主机

以上是关于如何设置别名或 VirtualHost 以在 Apache2 上运行 laravel 项目的主要内容,如果未能解决你的问题,请参考以下文章

使用别名时的 Apache VirtualHost 混淆

如何让 bash 完成以在 Windows 10 bash 中使用别名?

emacs:我可以定义一个别名以在 minibuffer 中使用 find-file

如何分别创建多个 Flutter 版本别名以在 Windows PC 的命令提示符中使用 [关闭]

如何在 Mac OS 上设置 Appium 以在 Android 和 iOS 设备上运行来自 JAVA 类的自动化测试

难道不可能有多个别名吗?