如何删除 .html URL 结尾并在 Firebase 中配置重定向?
How to remove .html URL endings and configure redirects in Firebase?
编辑:修复了我在 HTML 中将 about.html
称为 /about/
但我仍然遇到同样问题的错误。
我知道这是一个重复的问题,之前已经问过很多次,但其他人的解决方案对我不起作用。我想做的是重新路由,例如,index.html
到 /index/
和 about.html
到 /about/
.
我尝试使用@louisvno的回答, @michael-bleigh's answer , and @HarsH's answer here,都是在.json文件中添加以下内容:
"hosting": {
"cleanUrls": true
}
(这也是 Firebase 的配置托管行为指南的“Control .html extensions”部分的答案。)
但是,这没有效果。在我的 HTML 文件中,我尝试将 <a>
标签设置为 href="index.html
、href="/index/
和 href="/index"
,但是这些选项中的 none 有效并且我不确定是否有必要从原来的 <a href="index.html">
更改它。 (是吗?)
我尝试的另一个解决方案是使用 "redirects"
属性,正如 @ken-mueller here 所建议的。我删除了 "clearUrls" 位并将以下内容放入我的 .json 文件中:
"hosting": {
"redirects": [ {
"source": "index.html",
"destination": "/index",
"type": 301
}, {
"source": "index.html{,/**}",
"destination": "/index",
"type": 3011
}, {
"source": "about.html",
"destination": "/calculator",
"type": 301
}, {
"source": "about.html{,/**}",
"destination": "/solutions",
"type": 301
} ]
}
(这也是 Firebase Configure redirects section 的配置托管行为指南)
的答案
这也没有效果。而且,即使将我的 HTML 从 <a href="about.html">
更改为 <a href="/about/">
或 <a href="/about">
,它也只会破坏 about.html
页面并显示 index.html
页面.
我做错了什么?如何从 URL 的末尾删除 .html 并确保每次在 URL 中输入它时,它都会重定向到 URL 而没有结尾(即 /index/
而不是 /index.html
?
感谢 Firebase 支持人员的 Mau,最终解决了这个问题。 "cleanUrls"
工作正常,我只需要一个左括号和右括号 (duh)。对于我的 post 中的代码,我还注意到其中一个重定向将 "type":
设置为 3011
而不是 301
。无论哪种方式,最终代码是:
{
"hosting": {
"cleanUrls": true,
"trailingSlash": true
}
}
编辑:修复了我在 HTML 中将 about.html
称为 /about/
但我仍然遇到同样问题的错误。
我知道这是一个重复的问题,之前已经问过很多次,但其他人的解决方案对我不起作用。我想做的是重新路由,例如,index.html
到 /index/
和 about.html
到 /about/
.
我尝试使用@louisvno的回答
"hosting": {
"cleanUrls": true
}
(这也是 Firebase 的配置托管行为指南的“Control .html extensions”部分的答案。)
但是,这没有效果。在我的 HTML 文件中,我尝试将 <a>
标签设置为 href="index.html
、href="/index/
和 href="/index"
,但是这些选项中的 none 有效并且我不确定是否有必要从原来的 <a href="index.html">
更改它。 (是吗?)
我尝试的另一个解决方案是使用 "redirects"
属性,正如 @ken-mueller here 所建议的。我删除了 "clearUrls" 位并将以下内容放入我的 .json 文件中:
"hosting": {
"redirects": [ {
"source": "index.html",
"destination": "/index",
"type": 301
}, {
"source": "index.html{,/**}",
"destination": "/index",
"type": 3011
}, {
"source": "about.html",
"destination": "/calculator",
"type": 301
}, {
"source": "about.html{,/**}",
"destination": "/solutions",
"type": 301
} ]
}
(这也是 Firebase Configure redirects section 的配置托管行为指南)
的答案这也没有效果。而且,即使将我的 HTML 从 <a href="about.html">
更改为 <a href="/about/">
或 <a href="/about">
,它也只会破坏 about.html
页面并显示 index.html
页面.
我做错了什么?如何从 URL 的末尾删除 .html 并确保每次在 URL 中输入它时,它都会重定向到 URL 而没有结尾(即 /index/
而不是 /index.html
?
感谢 Firebase 支持人员的 Mau,最终解决了这个问题。 "cleanUrls"
工作正常,我只需要一个左括号和右括号 (duh)。对于我的 post 中的代码,我还注意到其中一个重定向将 "type":
设置为 3011
而不是 301
。无论哪种方式,最终代码是:
{
"hosting": {
"cleanUrls": true,
"trailingSlash": true
}
}