如何使用 Google 应用引擎重写网址——HTML5 模式不起作用
Posted
技术标签:
【中文标题】如何使用 Google 应用引擎重写网址——HTML5 模式不起作用【英文标题】:How to url rewrite with Google app engine -- HTML5 mode not working 【发布时间】:2018-01-28 16:49:57 【问题描述】:我正在为我的应用程序使用 Angularjs、Java。最初我使用 tomcat 来运行我的应用程序。当我运行我的项目时,它会打开 URL
http://localhost:8080/projectname
所以我将我的基本标签和html5模式配置为
$locationProvider.html5Mode(true);
$locationProvider.hashPrefix('');
<base href="/projectname/">
将欢迎文件配置为 web.xml 中的 main.html,我添加了代码
<welcome-file-list>
<welcome-file>main.html</welcome-file>
</welcome-file-list>
<error-page>
<error-code>404</error-code>
<location>/</location>
</error-page>
使 ui-router 在 html5 模式下工作(在 ui-router 问题页面中提到)。
然后我将我的项目更改为 google app engine 标准 java 项目,当我运行我的项目时,它使用 url 打开
http://localhost:8080
所以我将我的基本标记更改为
<base href="/">
这样在 main.html 中没有问题,但我的路由不起作用。当我使用 $state.go 它的工作。但是在刷新或手动输入网址时,我收到 404 错误。我的控制台错误是
WARNING: No file found for: /url
我参考了很多博客,但仍然对配置感到困惑
我已经在 web.xml 文件中配置了 spring
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
好像是把所有的url请求都映射到spring了,有什么办法解决吗?
【问题讨论】:
Tomcat 8 URL Rewrite 可能重复。 AngularJS: can't get html5 mode urls的可能重复 @georgeawg 我正在使用 Java EE 重写,当我使用 Tomcat 时它可以工作,但是当我将项目切换到谷歌应用引擎时,相同的 JavaEE 重写不起作用。 @georgeawg,我找到了this,但该帖子没有答案。 @Rishi 你能解决这个问题吗?如果是这样,建议发布您的解决方案作为此问题的答案,以更好地帮助社区。如果不是,您可以尝试将 requireBase 标志设置为 false 以根据 feature added in v1.6.6 选择退出基本标签。 【参考方案1】:问题是刷新页面,如果你打开基础并点击任何可以工作的链接,你需要编写重写URL的代码
对于运行 IIS 的应用,我们需要添加:
<system.webServer>
<rewrite>
<rules>
<rule name="Main Rule" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="REQUEST_FILENAME" matchType="IsFile" negate="true" />
<add input="REQUEST_FILENAME" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="/" />
</rule>
</rules>
</rewrite>
</system.webServer>
See detail for IIS configuration
对不起,我从来没有用过tomcat
【讨论】:
以上是关于如何使用 Google 应用引擎重写网址——HTML5 模式不起作用的主要内容,如果未能解决你的问题,请参考以下文章
301重写域名.co.uk至网址:www.domain.co.uk就像搜索引擎友好的开发人员你!