如何将404重定向到首页?

时间:2018-07-13 12:30:25

标签: firebase http-status-code-404 firebase-hosting

我刚刚开始在Firebase上托管一个Web应用程序。 firebase cli(firebase-tools)的自动设置在我的公用文件夹中创建了一个404.html文件。

但是我不想看到自定义的404错误页面,也不想看到Firebase的默认页面。 我想将所有404重定向到起始页,以便无论如何都要初始化该应用程序。 (我在webpack-dev-server上进行的本地设置工作正常)

一种解决方法是将index.html中的相同内容放入404.html中。但这导致维护增加一倍。

我在https://firebase.google.com/docs/hosting/url-redirects-rewrites上找到了一些有关重定向配置的信息。 但是无法重定向404错误类型。 无法使用.htaccess文件。

我缺少正确的位置来更改此行为,无论是在我的firebase.json文件中还是在https://console.firebase.google.com/文件中?

2 个答案:

答案 0 :(得分:1)

不确定这是否对您有用,我从来没有用.htaccess做任何事情,但就我而言,我总是用这种方式修复它:

您可以在firebase.json文件的rewrites部分中将通配符路由作为最后一个路由,因此任何先前未声明的路由都将匹配:

"rewrites": [
  {
    // route info here
  },
  {
    // another route
  },
  {
    // If it makes it here, it didn't match any previous routing
    // Match all routes that get to this point and send them to the home page.
    "source": "**",
    "destination": "/index.html"
  }
]

答案 1 :(得分:0)

如果您不想留下原始/不存在的网址(例如https://example.com/asdf),则可以修改404.html源并将其替换为js重定向。

public class EventPresenter implements EventContract.Presenter{

    private EventContract.View eventView;
    private EventContract.Model eventModel;

    public EventPresenter(EventContract.View eventView) {
        this.eventView = eventView;
        eventModel = new EventModel();
    }

    @Override
    public void onDestroy() {
        this.eventView = null;
    }

    @Override
    public void requestDataFromServer() {
        if(eventView != null){
            eventView.hideProgress();
        }

        eventModel.getEventInfo(this);
    }



}