node.js - 使用 grunt 服务器,如何将所有请求重定向到根 url?

标签 node.js angularjs gruntjs yeoman angularjs-routing

我正在构建我的第一个 Angular.js应用程序,我正在使用 Yeoman .

Yeoman 使用 Grunt 允许您使用命令“grunt server”运行 node.js 连接服务器。

我在 html5 模式下运行我的 Angular 应用程序。根据 Angular 文档,这需要修改服务器以将所有请求重定向到应用程序的根目录 (index.html),因为 Angular 应用程序是单页 ajax 应用程序。

"Using [html5] mode requires URL rewriting on server side, basically you have to rewrite all your links to entry point of your application (e.g. index.html)"

我试图解决的问题在 this 中有详细说明问题。

如何修改我的 grunt 服务器以将所有页面请求重定向到 index.html 页面?

最佳答案

首先,使用您的命令行,使用您的 gruntfile 导航到您的目录。

在 CLI 中键入:

npm install --save-dev connect-modrewrite

在你的 grunt 文件的顶部放这个:

var modRewrite = require('connect-modrewrite');

现在下一部分,你只想添加 modRewrite进入您的连接:

modRewrite(['!\\.html|\\.js|\\.svg|\\.css|\\.png$ /index.html [L]']),

这是我的“连接”在我的 Gruntfile.js 中的样子的示例。您无需担心我的 lrSnippet 和我的 ssIncludes。你需要做的主要事情就是把 modRewrite 放进去。

        connect: {
        options: {
            port: 9000,
            // Change this to '0.0.0.0' to access the server from outside.
            hostname: '0.0.0.0',
        },
        livereload: {
            options: {
                middleware: function (connect) {
                return [
                        modRewrite(['!\\.html|\\.js|\\.svg|\\.css|\\.png$ /index.html [L]']),
                        lrSnippet,
                        ssInclude(yeomanConfig.app),
                        mountFolder(connect, '.tmp'),
                        mountFolder(connect, yeomanConfig.app)
                        ];
                }
            }
        },
        test: {
            options: {
                middleware: function (connect) {
                    return [
                    mountFolder(connect, '.tmp'),
                    mountFolder(connect, 'test')
                    ];
                }
            }
        },
        dist: {
            options: {
                middleware: function (connect) {
                    return [
                    mountFolder(connect, yeomanConfig.dist)
                    ];
                }
            }
        }
    },

关于node.js - 使用 grunt 服务器,如何将所有请求重定向到根 url?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17080494/

相关文章:

node.js - 我应该将我的 Node JS 应用程序放在哪里,以便可以通过主网站访问它?

javascript - $digest 的调用不足以触发 $watch - AngularJs

javascript - AngularJS 将数据传递到模板 View

css - OOCSS 到 Long CSS 生成器

css - 编译bootstrap compass文件时如何更改路径

javascript - 如何在nodejs中先实现mysql查询? (或者先实现条件查询)

javascript - 无法读取 JSON 响应,整数变为 NULL

javascript - 获取不支持的 MIME 类型

javascript - Angularjs 在指令中调用作用域函数

javascript - 运行 grunt 测试的 Angular 主存储库在 "bower"任务上失败