Angularjs 如何配置重定向Glassfish4 Maven Webapp
我正在使用Glassfish 4开发一个Web应用程序。我有一个REST后端,使用Jersey在JAVA中开发,还有一个AngularJS前端。所有这些都包含在MAVEN Jersey Quickstart Web应用程序中 现在,我遇到的问题是,当人们查询我的应用程序的URL时: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
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文件
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