使用 apache 虚拟主机使 Laravel 与多个其他 LAMP 项目共存

Posted

技术标签:

【中文标题】使用 apache 虚拟主机使 Laravel 与多个其他 LAMP 项目共存【英文标题】:making Laravel coexist with multiple other LAMP projects using apache virtual host 【发布时间】:2017-06-07 09:50:11 【问题描述】:

我正在尝试使 Laravel 与 /var/www 下的本地安装上的其他项目共存,我目前的解决方案是为 Laravel 目录使用别名,为其他项目使用其他几个别名。

例如:

<VirtualHost *:80>
        Alias /laravel /var/www/laravel/public
        Alias /other_project /var/www/other_project
        <Directory /var/www/other>
                Order allow,deny
                 allow from all
        </Directory>

        DocumentRoot /var/www/laravel/public
        <Directory /var/www/laravel/public>
                AllowOverride All
        </Directory>
</VirtualHost>

然而,上面的解决方案使http://localhost 和http://localhost/laravel 都重定向到 Laravel,如果我在 /var/www 的根目录上放置一个 index.php,则会被忽略,而是显示 Laravel 安装。

目录 other_project 与 Laravel 完全分离并显示其内容后可以正常工作。

如何让http://localhost/ 显示标准 index.php,http://localhost/laravel 显示 Laravel 安装,http://localhost/other_project 显示另一个 php 项目??

【问题讨论】:

***.com/questions/14700797/… 上述解决方案使用不同的 ServerAlias 但是我正在本地安装并且只能使用 localhost。 【参考方案1】:

改变

DocumentRoot /var/www/laravel/public

DocumentRoot /var/www

也就是说,如果你想显示任何形式 /var/www

【讨论】:

如果我将 DocumentRoot 更改为 /var/www Laravel 中断,我可以正确看到 localhost,但是一旦我访问 localhost/laravel 图像就会损坏并访问 laravel 内部的链接,例如 laravel/login 会重定向我到 localhost/login 时出现 404 错误。 尝试添加另一个虚拟主机,Laravel 将作为文档根目录。通常对于单个 apache 上的多个站点,我们会添加多个 VirtualHost。您也可以尝试为每个虚拟主机分配一个ServerName 和一个ServerAlias 属性。

以上是关于使用 apache 虚拟主机使 Laravel 与多个其他 LAMP 项目共存的主要内容,如果未能解决你的问题,请参考以下文章

在虚拟主机中使用自定义端口的 Laravel 路由在 Apache 中不起作用

这个 apache2.4 和 laravel 设置合适的虚拟主机是啥?

Apache与PHP的结合使主机访问linux80端口的方法

os x MAMP apache 虚拟主机 laravel 项目配置错误

当虚拟主机指向 HTDOCS 之外时,Apache 会中断 laravel 路由

在视图上生成 URL 时,Laravel 命名路由方法不会生成主机服务器的 (apache) 别名