繁体   English   中英

如何使用Google App Engine进行网址重写-HTML5模式不起作用

[英]How to url rewrite with Google app engine — HTML5 mode not working

我正在为我的应用程序使用Java Angularjs。 最初,我使用tomcat运行我的应用程序。 当我运行项目时,它将打开URL

HTTP://本地主机:8080 /项目名称

所以我将基本标记和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://本地主机: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,有什么办法解决吗?

问题在于刷新页面,如果您打开基础并单击将起作用的任何链接,则需要编写代码以重写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>

查看IIS配置的详细信息

对不起,我从来没有和tomcat一起工作过

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM