当前位置: 首页 > 面试题库 >

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

桑坚
2023-03-14
问题内容

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

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

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

“使用[html5]模式需要在服务器端重写URL,基本上,您必须重写所有指向应用程序入口点的链接(例如index.html)”

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


问题答案:

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

在CLI中输入以下内容:

npm install --save-dev connect-modrewrite

在您的咕unt声文件的顶部放这个:

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)
                    ];
                }
            }
        }
    },


 类似资料:
  • 我们的整个网站将通过https提供服务。我在每条路线上都有“https”。但是,如果他们试图通过http将其重定向到https,我该如何将其重定向到https?

  • 我在WebSphere8应用服务器前面配置了apache反向代理。我已经设置了通用的JVM参数-dhttps.proxyhost和-dhttps.proxyport,但是response.sendredirect上的请求并不指向peoxy服务器。它被引导到defualt端口9080。如何解决这个问题?我在Tomcat&Jboss上解决了这个问题,方法是修改连接器端口,如下所示 连接器name=“h

  • 问题内容: 我正在写一个简单的基于PHP的MVC-ish框架。我希望该框架能够安装在任何目录中。 我的PHP脚本抓取了请求uri并将其分为多个部分。它使段1成为控制器,而段2成为动作。当我这样做时,一切都很好 它将转到特定的模块控制器和方法。现在,我有一个默认控制器,即home控制器,它位于文件夹home中。 ,它将显示403禁止,因为此文件夹确实存在,相反,它也应该返回如果我将框架安装在其他文件

  • 名为charles的工具中有一个功能,允许您映射远程请求: http://www.charlesproxy.com/documentation/tools/map-remote/ 基本上,它可以将任何请求发送到服务器(即使不是运行它的人),然后向另一台服务器发出新请求,保留路径和查询字符串。然后,来自第二台服务器的响应将覆盖来自第一台服务器的响应。 我只是想知道是否有一个节点模块可以做到这一点。我

  • 问题内容: 我已经尝试解决一个奇怪的问题了一段时间了。在浏览了许多棱角分明的代码之后,当我通过Charles将请求记录到服务器时,我注意到了一些奇怪的东西。 当我发布到url时,请求实际上不会到达我的服务器。相反,它收到301响应,然后GET请求命中了我的服务器。 这令人难以置信。还有其他人遇到这个问题吗?如果您有兴趣,我已经上传了我的Charles日志的屏幕截图。 作为参考,这是我的服务器的外观

  • 我被夹在中间。我想实现一个POST方法,使用HttpUrlConnection向服务器发送注册用户的电子邮件、名称和密码。以下是我的代码: 我不知道我在哪里犯了错误。我收到以下回复 空格后的“0”是超文本传输协议响应代码返回的响应代码。当我在浏览器中尝试时,我的网址是正确的。我不知道我在哪里犯了错误;是我的服务器故障还是我的代码有错误,因为我不认为我的代码有任何交互处理。 我是Android开发的