如何在同一个域上运行多个 Laravel 实例?

Posted

技术标签:

【中文标题】如何在同一个域上运行多个 Laravel 实例?【英文标题】:How to run multiple instances of Laravel on the same domain? 【发布时间】:2016-10-26 09:58:49 【问题描述】:

我在 Windows Server 2012 上运行 Apache 2.4,在端口 8080 上运行 php 5.6.23。

假设我服务器的域是“serv1.example.com”,我需要使用以下链接运行 3 个 Laravel 实例 productionstagingdev

serv1.example.com:8080/production
serv1.example.com:8080/staging
serv1.example.com:8080/dev

我发现另一个SO question 似乎在做同样的事情。但是当我尝试做同样的事情时,我得到了以下错误

Forbidden

You don't have permission to access /dev on this server.

这是我到目前为止所做的。在我的 httpd-vhosts.conf 文件中,我添加了以下 VirtualHost

<VirtualHost *:8080>

    ErrorLog "logs/dev-error.log"
    CustomLog "logs/dev-access.log" common
    DocumentRoot "C:\www\dev\public"
    ServerName serv1.example.com
    ServerAlias /dev

    <Directory "C:\www\dev">
        Options Indexes Includes FollowSymLinks MultiViews
        AllowOverride AuthConfig FileInfo Indexes
        Order allow,deny
        Allow from all
    </Directory>

</VirtualHost>

然后我把c:\www\dev\public\.htaccess的代码改成如下

<IfModule mod_rewrite.c>
    #Options -MultiViews
    RewriteEngine On
    RewriteBase /
    RewriteCond %REQUEST_FILENAME !-f
    RewriteCond %REQUEST_FILENAME !-d
    RewriteRule ^(.*)$ /dev/index.php/?$1 [L]
</IfModule>

我在这里做错了什么?如何使用同一个域访问每个实例?

【问题讨论】:

【参考方案1】:

试试这个,在你的Apache配置文件/etc/apache2/sites-available

<VirtualHost *:8080>
     ServerName  serv1.example.com
     ServerAlias serv1.example.com
     DocumentRoot "C:/www/dev/public"

     # Rewrites for pretty URLs, better not to rely on .htaccess.
     <Directory "C:/www/dev/public">
         Options All
         AllowOverride All
         Require all granted

        <IfModule mod_rewrite.c>
            Options -MultiViews
            RewriteEngine On
            RewriteCond %REQUEST_FILENAME !-f
            RewriteRule ^ index.php [L]
        </IfModule>
     </Directory>

# Log file locations
LogLevel warn
ErrorLog "logs/dev-error.log"
CustomLog "logs/dev-access.log" common

在你的c:\www\dev\public\.htaccess

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>

RewriteEngine On

# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]

# Handle Front Controller...
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_FILENAME !-f
RewriteRule ^ index.php [L]

我希望这会奏效。欲了解更多信息,请点击这些链接。Multiple laravelsites on single apache server,multiple web sites in single laravel installation

【讨论】:

这对我不起作用。 + 你为什么要把 /var/www 留在那是 lunix 的东西而不是 windows。 示例取自 linux 安装,我也在 linux 环境中使用 laravel。所以请改变这些东西。 它仍然无法正常工作。我收到了 403 禁止错误 检查这个问题***.com/questions/18447454/… 我越来越近了!谢谢你。所以下面的链接似乎工作正常http://server1.example.com:8080/mod/terminated 但它应该是这个http://server1.example.com:8080/dev/mod/terminated

以上是关于如何在同一个域上运行多个 Laravel 实例?的主要内容,如果未能解决你的问题,请参考以下文章

同一域上的多个 Laravel 5 项目

Laravel:在多个域上共享会话数据

如何使用单个 Laravel 代码实例配置和运行具有各自数据库的多个网站

如何从Angular向同一域上的Laravel API发送请求?

Laravel:如何打开多个域(不是子域)以显示来自同一服务器的页面(无重定向)?

在多个域上运行多个商店时,配置Magento + Apache的正确方法是什么?