Firebase:在URL Rewrite中传递url Param

时间:2017-07-15 20:05:05

标签: firebase url-rewriting firebase-hosting

对于firebase文档中的代码示例,它表示启动一个url重写,如下所示:

        "hosting": {
          // Add the "rewrites" section within "hosting"
          "rewrites": [ {
            "source": "**",
            "destination": "/index.html"
          } ]
        }

当我想将参数传递到索引页面时该怎么办?我试过了:

        "hosting": {
          // Add the "rewrites" section within "hosting"
          "rewrites": [ {
            "source": "/item/**",
            "destination": "/item.html?i=$1"
          } ]
        }

但那并没有做任何事情......

我也尝试过以下答案:

 "hosting": {
  // Add the "rewrites" section within "hosting"
  "rewrites": [ {
    "source": "/item/:item",
    "destination": "/item.html?i=:item"
  } ]
}

但这只会返回404页。

5 个答案:

答案 0 :(得分:2)

我刚收到Firebase支持的电子邮件,其中包含以下内容:

  

从Firebase支持更新:

     

单独使用Firebase托管无法使用您的用例。您还需要使用云功能。 Firebase刚刚发布了原生Firebase托管+功能集成,可以执行服务器端处理,因此您可以将URL重定向到一个功能,您可以编写代码来剖析路径并生成您想要的任何响应。您可以查看我们的文档,以便详细了解它。

     

https://firebase.google.com/docs/hosting/functions

我已经通过电子邮件发送回去,看看这是否会在将来添加,因为运行一个页面的流程似乎有些过分。

2017年7月28日更新

  

由于不支持,我已经为您提交了功能请求。但是,我暂时无法分享任何细节或时间表。我们会继续考虑您的反馈意见。

     

与此同时,您可以留意我们的发行说明。

     

度过美好的一天。

     

https://firebase.google.com/support/releases

答案 1 :(得分:2)

我知道这是一个古老的问题,但是我遇到了类似的问题,并且没有找到答案,因此以为我会分享解决方法。

{    
    "hosting": {
    // Add the "rewrites" section within "hosting"
        "rewrites": [ {
            "source": "/item/**",
            "destination": "/item.html"
        } ]
}

我通过将动态URL重写到静态html页面解决了我的问题。由于是重写,因此该URL将保持为source URL模式,而不会像重定向那样更改为destination URL。

然后,我们可以在source页面上使用Javascript通过window.location.pathname来读取item.html URL。然后,您可以使用.split('/')返回数组以选择所需的部分。

希望这对寻求类似解决方案的人有所帮助。

答案 2 :(得分:0)

我也遇到了同样的问题。尽管通过重写不可能做到这一点,但我发现使用redirects可以实现这一点:

        const response2 = await fetch('Export.log');
        var data2 = await response2.text();
        var formatted = JSON.parse(data2);
        console.log(formatted);

答案 3 :(得分:-1)

var priceSwiper = new Swiper('.swiper-container',{
 onSlideChangeEnd: function(swiper){
  var value = $('#price .swiper-slide-active').text();
 console.log(value);
 }                                          
})

试一试。

答案 4 :(得分:-2)

FireBase Allows for Static web hosting. It also has some Custom Behaviours

 https://firebase.google.com/docs/hosting/url-redirects-rewrites

Redirects:: this is only for page forwarding 
Rewrites:: when you want to show the same content for multiple URLs [ it is there for URL reversing ].
It also provides control over the MIME types of the HTTP requests.

现在,从上面的问题我看到你正在尝试从动态网络主机提供的页面查询DOM对象。

https://www.quora.com/How-are-dynamic-websites-hosted-1