如何使用Angular 7路由Laravel应用程序

时间:2019-05-08 19:59:41

标签: angular laravel apache server routing

我在本地创建了一个带有LAMP的服务器,我想将Laravel用作后端,并将Angular 7用作前端。

我将其放入我的web.php文件中:

<?php

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
        View::addExtension('html', 'php');
        return view('index');
});

然后我将所有Angular文件放入/public/文件夹中,除了index.html内的/resources/views之外。

原因是:如果您访问site.com/,将加载Angular。例如,如果单击链接并转到site.com/page,则angular将加载此页面。到这里为止,一切都按预期进行。

但是,如果您只是在浏览器的地址栏中键入site.com/page,则实际上是在向site.com/page发送请求。由于不存在,Web服务器将返回404,Angular应用程序将无法工作。 Angular甚至没有机会被加载。

我知道这是由于在/page文件中没有到web.php的路由引起的,但是我的问题是如何解决此路由问题?

谢谢。

2 个答案:

答案 0 :(得分:2)

使用fallback route

  

使用Route::fallback方法,您可以定义一个路由,当没有其他路由与传入请求匹配时将执行该路由。

Route::fallback(function () {
    //
});

请确保将其放在路由文件的末尾,以使所有现有路由(例如您的API端点)都能正常匹配。

添加后备路由之前,另一个常见的解决方案是使用regular expression matching创建通配符路由:

Route::get('{any}', 'WildcardController@handle')->where('any', '.*');

答案 1 :(得分:0)

好的,我将引导您完成设置Laravel&Angular项目的步骤,
首先,您需要使用ng build来构建您的angular应用程序,并传递--prod之类的任何标志以在生产模式下进行创建,或者只使用--ng build别忘了更改angular创建最终文件的文件夹,您可以这样做转到angular.json并修改outputPath“:”“ ../server/public/client/”,就像这样。 第二:您需要转到由Angular创建的公用文件夹,然后将index.html文件复制或移动到laravel的view文件夹中并粘贴。 第三:您需要修改指向laravel公用文件夹中的angular客户文件夹的angular指向脚本,仅此而已。

像这样

enter image description here 我的角度文件夹在这种情况下是客户端 那里呀 您还可以通过修改ng -build命令或使用自动化构建工具(例如Gulp,Grunt和Webpack)来执行此操作。 希望我能帮助您