【问题标题】:IF request mapping unresolved AND path not found in static resources location then redirect to index.html如果请求映射未解析且在静态资源位置找不到路径,则重定向到 index.html
【发布时间】:2015-12-31 22:03:41
【问题描述】:

问题(由前端,angularjs上下文引起):

“X 在其定位服务中使用 HTML5 模式。这意味着,您将看到像 www.example.com/mail 这样的 URL,而不是像这样的 URL:www.example.com/#/mail

此外,如果不遵循 .htaccess 规则,您将无法直接访问您的应用程序。因此,在 url 栏输入 www.example.com/mail 或刷新您的应用程序将导致内部服务器错误。

创建一个与 index.html 位于同一目录的 .htaccess,并将以下代码粘贴到其中:"

 <IfModule mod_rewrite.c>
        RewriteEngine On
        # Send all requests to the index.html unless
        # it's a directory or a file that actually exists
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^ index.html [L]
 </IfModule>

当我使用 tomcat 时,这个脚本与必须放在 Spring Boot 应用程序中的伪代码一样有用。否则浏览器中直接键入的路径都不起作用(获取 404 白标服务器页面)。

实际上我需要实现类似的东西。我什至不知道我应该看哪些组件。

到目前为止,我脑海中的信息是杂乱无章的:

  • 过滤器链和资源处理程序中的弹簧过滤器按我提到的顺序(根据跟踪日志)命中。
  • 只要路径为:我就需要重定向到 index.html: A. 不是 rest api 控制器路径和 B. 未解析为内部的静态资源(在我的情况下为“静态”资源文件夹)。

那么我需要创建自定义资源处理程序/自定义过滤器吗?或者问题可能出在不同的维度上? (tomcat 本身?)

【问题讨论】:

    标签: spring-boot


    【解决方案1】:

    这个问题比技术更符合逻辑:

    A.必须由angular js解析的路径与backed无关 -> 意思是,后端不知道 Angular 知道哪些路径,哪些不知道。

    B.因此,如果控制器和资源处理程序没有解析资源 - 这是后端的 404 情况。所以:

    @Component
    public class WebConfiguration implements EmbeddedServletContainerCustomizer {
        @Override
        public void customize(ConfigurableEmbeddedServletContainer configurableEmbeddedServletContainer) {
            configurableEmbeddedServletContainer.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/index.html"));
        }
    }
    

    解决问题。结果是,每当我们访问/mail 时,后端都会返回 index.html ,然后 Angular 会解析内部路径并显示部分电子邮件。角度如何我自己也不确定,不知道html5模型是怎么记住路径的。

    这个解决方案的不足之处是请求rest api,定位错误的rest api路径会收到index.html,但设置状态应该没什么大不了的。

    很高兴知道在后端流程中的哪个点,请求既没有解析到控制器也没有解析到静态资源以及如何捕获此行为。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-02
      • 1970-01-01
      • 1970-01-01
      • 2017-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-24
      相关资源
      最近更新 更多