如何处理一个域或服务器上两个 Laravel 项目的路由?

如何处理一个域或服务器上两个 Laravel 项目的路由?

我正在开发一个分为两个独立部分的项目。第一部分,较大的部分,使用 Laravel 4.2。第二部分,较小的部分,使用 Laravel 5。两个部分都在同一台服务器上。

我的目标是访问和使用两个项目的路线,即项目 1 可以调用和访问项目 2 的路线,反之亦然。

为了访问这两个项目,我正在使用以下虚拟主机文件:

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot /var/www/Laravel4Project/public

    ServerName www.Laravel4Project.dev
    Alias /billing /var/www/Laravel5Project/public

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    <Directory /var/www/Laravel4Project/public/>
        AllowOverride All
    </Directory>
</VirtualHost>

上述文件中的“/billing”别名允许我从 Laravel4Project 内部访问 Laravel5Project,而无需在 Laravel4Project 的“routes.php”文件中声明“/billing”路由。会话和身份验证都很好。到目前为止没有问题。

问题是 'billing' 别名指向 Laravel5Project 中的 '/' 根目录,并且我的 Laravel5Project 中还有一些其他路由,如下所示:

Route::get('/', function() {
    return 'Laravel 5 Project';
}

Route::get('/anOtherRoute', function() {
    return 'Another Route from Laravel 5 Project';
}

为了访问 Laravel5Project 的“/”路由,我在 Laravel4Project 中提供了“/billing”链接,该链接运行良好,并允许我访问 Laravele5Project。但是,当我在 Laravel4Project 中提供“/billing/anotherRoute”或“/anotherRoute”链接时,访问 Laravel5Project 的“/anotherRoute”均不起作用,Apache 服务器给出了以下错误:

Not Found
    The requested URL /billing/anotherRoute was not found on this server.
    Apache/2.4.12 (Ubuntu) Server at www.laravel4project.dev Port 80

我知道这是因为在我的 Laravel4Project 中没有路线“/billing/antohterRoute/”,但它在 Laravel5Project 的“route.php”文件中。“/billing”本身不是路线,它只是一个“别名”。

所以我的问题是如何从 Laravel4Project 内部访问 Laravel5Project 的所有路线,反之亦然?

以下是 Laravel4Project 和 Laravel5Project 的 .htaccess 文件:

Laravel4项目根目录中的.htaccess 文件:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond  %{REQUEST_URI}  !^/mm.*$
    RewriteRule ^(.*)$ public/$1 [L,QSA]

    RewriteCond  %{REQUEST_URI}  ^/mm.*$
    RewriteRule ^/mm/(.*)$ public/mm/$1 [L,QSA]
</IfModule>
AddDefaultCharset utf-8

Laravel4Project'public'目录中的.htaccess 文件:

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

    RewriteEngine On

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

Laravel5项目公共目录中的.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]
</IfModule>

答案1

在等待 Laravel 社区和 stack exchange 的回复后,我仍未得到答案。

但我也不断尝试自己寻找解决方案,解决方案如下:

如果您注意到上面的问题,我提到 Apache 给出了以下错误:

Not Found
The requested URL /billing/anotherRoute was not found on this server.
Apache/2.4.12 (Ubuntu) Server at www.laravel4project.dev Port 80

请注意 URL“/billing/anotherRoute”和域“www.laravel4Project.dev”。这意味着我提供的 URL 是错误的,如下所示:

错误的网址

www.laravel4project.dev/billing/anotherRoute

只需在“/billing”后添加“index.php”即可。因此正确的 URL 如下所示:

正确的 URL

www.laravel4project.dev/billing/index.php/anotherRoute

现在唯一剩下的问题就是从 URL 中删除“index.php”。

有人可以帮我吗?

相关内容