regex - Firebase 使用正则表达式重定向
问题描述
我的目标是将任何不以特定符号(“#”)开头的 URL 重定向到不同的网站。我正在使用 Firebase 托管,并且已经在重定向中尝试了 Regex 函数来实现这一点。我遵循了这个关于重定向的 firebase文档,但是因为我不熟悉正则表达式,所以我认为我的错误可能是我的正则表达式代码。
我的目标:
- mydomain.com/anyNotStartingWith# => otherdomain.com/anyNotStartingWith#
- mydomain.com/#any => mydomain.com/#any
我的代码:
{
"hosting": {
...
"redirects": [
{
"regex": "/^[^#]:params*",
"destination": "otherdomain.com/:params",
"type": 301
}
],
...
}
}
解决方案
您可以使用
"regex": "/(?P<params>[^/#].*)"
关键是您需要一个捕获组,该组将匹配并捕获您要在destination
. 所以,在这种情况下
/
- 火柴/
(?P<params>[^/#].*)
- 命名捕获组(您可以从usingparams
中引用该组):destination
:params
[^/#]
/
-和以外的任何字符#
.*
- 除换行符以外的任何零个或多个字符,尽可能多
为避免将文件与 匹配.js
,您可以使用
/(?P<params>[^/#].*(?:[^.].{2}$|.[^j].$|.{2}[^s]$))$
在 Regex 中查看有关如何否定模式的更多信息:匹配除特定模式之外的所有内容。
推荐阅读
- breadth-first-search - 迷宫有效的标准是什么
- javascript - 在php中将Javascript DateTime格式化为日期('ymdHis')
- java - java Class-loader loader Hierarchy中同一级别的两个类加载器(假设都是URLClassLoader)如何加载一个类
- c++ - 在纯 WinAPI GUI 应用程序中创建子窗口的子控件的最佳位置在哪里?
- mongodb - Prisma 在 MongoDB 中创建新数据库
- javascript - 通过从前端获取输入在服务器端渲染某些东西
- django - Django ORM查找字符串是否包含列值
- sql - 在一个查询中计算多行之间的差异
- pandas - AWS Redshift Spectrum 十进制类型读取 parquet double 类型
- scala - 如何根据其键的类型投射地图?