Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 如何配置重定向Glassfish4 Maven Webapp_Angularjs_Maven_Glassfish_Angular Routing - Fatal编程技术网

Angularjs 如何配置重定向Glassfish4 Maven Webapp

Angularjs 如何配置重定向Glassfish4 Maven Webapp,angularjs,maven,glassfish,angular-routing,Angularjs,Maven,Glassfish,Angular Routing,我正在使用Glassfish 4开发一个Web应用程序。我有一个REST后端,使用Jersey在JAVA中开发,还有一个AngularJS前端。所有这些都包含在MAVEN Jersey Quickstart Web应用程序中 现在,我遇到的问题是,当人们查询我的应用程序的URL时: http://localhost:8080/MyApp/ 它工作正常,并向用户发送适当的index.html。但是,如果用户键入的URL“应该”由我的应用程序路由处理,请说: http://localhost:80

我正在使用Glassfish 4开发一个Web应用程序。我有一个REST后端,使用Jersey在JAVA中开发,还有一个AngularJS前端。所有这些都包含在MAVEN Jersey Quickstart Web应用程序中

现在,我遇到的问题是,当人们查询我的应用程序的URL时:

http://localhost:8080/MyApp/
它工作正常,并向用户发送适当的index.html。但是,如果用户键入的URL“应该”由我的应用程序路由处理,请说:

http://localhost:8080/MyApp/search
它给出了一个404错误。但是,如果您从/MyApp/route开始,则可以从应用程序内部访问此URL,因为提供所有angularJS内容的index.html能够理解和控制路由

本质上,我面临的问题是,我需要为所有需要返回index.html的位置设置适当的重定向

因此,当我点击以下任意URL时,它应该向用户发送index.html,并让AngularJs找出路由

例如

不幸的是,我在这里可能真的很笨,但我不知道如何配置服务器/webapp来做到这一点。我该怎么做呢?我认为这是相当明显/琐碎的,但我对所有这些东西都很陌生,所以对我放松点

编辑1:关于使用mod rewrite或UrlRewriteFilter,我得到了一些很好的帮助,但就我所见,这两种方法似乎都不适用于Glassfish4。有没有人可能知道这些方面的等价物?

如前所述,您需要使用apache并使用
mod_rewrite
。 此外,您还可以使用它,它允许您在URL到达您的代码之前重写URL

为此,您需要在maven文件中添加依赖项:

<dependency>
    <groupId>org.tuckey</groupId>
    <artifactId>urlrewritefilter</artifactId>
    <version>4.0.3</version>
</dependency>
  • 在管理控制台中登录glassfish,展开配置 节点。展开服务器配置节点。如果需要,请忽略此步骤 运行开发人员域(没有群集的域) 能力)。扩展HTTP服务。扩展虚拟服务器。点击 服务器。在“编辑虚拟服务器”页面上,单击“添加”属性 按钮在“名称”列中,键入重定向_1

    如果您使用的是Application Server 9.0,请键入 from=//myproduct1 url前缀=/mywarname/mypages/products/myproduct1.jsp在值中 专栏

    注意-您在此处提供的值需要 匹配web.xml或中指定的上下文根的值 application.xml文件


我不明白这个问题。听起来你需要一个Apache来重写你的URL?这与Maven有什么关系?它可能与Maven没有关系-我不确定这是在哪里配置的,所以我将Maven作为一个标记。您是否删除了用于他的路由的散列“#”?嗨,MrMins-这看起来像我要找的。我刚刚将这两部分添加到我的项目中,但它似乎不起作用。UrlRewriteFilter对glassfish有效吗?@TomO'Brien不,它正在使用
ApacheTomcat
你需要配置你的
Apache
来接受和重写这些URLs@TomO'Brien读取此线程以配置:[[1]:抱歉,我有点困惑。那么这对Glassfish不起作用了吗?在我的日志中,当我像你说的那样配置它时,它会给出以下信息:ebModule[null]ServletContext.log():org.tuckey.web.filters.urlrewrite.UrlRewriteFilter信息:loaded(conf ok)…然而,当我只点击了404的URL时,什么也没有发生。我想这似乎只是一个页面重定向。
<dependency>
    <groupId>org.tuckey</groupId>
    <artifactId>urlrewritefilter</artifactId>
    <version>4.0.3</version>
</dependency>
<filter>
    <filter-name>UrlRewriteFilter</filter-name>
    <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>UrlRewriteFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>
http://localhost:8080/MyApp/search   ----> search.html
http://localhost:8080/MyApp/results  ----> results.html
http://localhost:8080/MyApp/browse   ----> browse.html