如何使用 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 模式不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Google App Engine 中的漂亮网址

301重写域名.co.uk至网址:www.domain.co.uk就像搜索引擎友好的开发人员你!

google搜索引擎使用

php伪静态

如何在类似于应用引擎的Google Compute引擎上部署应用?

在 Google 应用引擎中如何删除最初使用文件服务存储的文件