如何将.htaccess文件转换为Firebase主机配置



我在Angular 2中构建了一个SPA,并在Firebase hosting上托管它。我专门为爬行机器人构建了一些额外的静态html页面(因为它们不读取更新的动态html,只读取初始index.html(,现在我需要将机器人的HTTP请求的URL重写到这些静态页面。

我知道如何在.htaccess文件中做到这一点,但我不知道如何翻译firebase.json文件中的重写条件。

这是我的.htaccess:

RewriteEngine On

# Remove trailing /
RewriteRule ^(.*)/$ /$1 [L,R=301]

# Rewrite spiders to static html
RewriteCond %{HTTP_USER_AGENT} (googlebot|bingbot|msnbot|yahoo|Baidu|aolbuild|facebookexternalhit|iaskspider|DuckDuckBot|Applebot|Almaden|iarchive|archive.org_bot) [NC]
RewriteCond %{DOCUMENT_ROOT}/static%{REQUEST_URI}.html -f
RewriteRule ^(.*)$ /static/$1.html [L]

# Rewrite spiders to static index.html
RewriteCond %{HTTP_USER_AGENT} (googlebot|bingbot|msnbot|yahoo|Baidu|aolbuild|facebookexternalhit|iaskspider|DuckDuckBot|Applebot|Almaden|iarchive|archive.org_bot) [NC]
RewriteCond %{REQUEST_URI} "^/$"
RewriteRule ^ /static/index.html [L]

# If an existing asset or directory is requested, serve it
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
RewriteRule ^ - [L]

# If the requested resource doesn't exist, use the Angular app entry point
RewriteRule ^ /index.html

我读过Firebase关于配置重写的文档,但不知道如何针对特定的用户代理。

有什么想法吗?

Firebase Hosting不支持基于用户代理标头配置重写。它可以支持基于路径的重写,以及基于用户/浏览器的语言的重写。

据我所知,基于其他头进行重写的唯一选项是将Firebase Hosting连接到Cloud Functions或Cloud Run,并在代码中进行重写。但这与在firebase.json文件中配置重写有很大不同,因此我建议在选择此路径之前先阅读它。

相关内容

  • 没有找到相关文章

最新更新