【问题标题】:Htaccess redirect matching from a list?Htaccess 从列表中重定向匹配?
【发布时间】:2021-11-30 01:26:29
【问题描述】:

我相信应该有一种比我目前更简单的方法来重写 URL,不知道是否有人可以提供帮助。

我正在开发的网站有多个品牌,例如:

https://example.com/anything/brand/nike/something
https://example.com/anything/brand/puma/something

我当前的重定向是

RedirectMatch 301 "(.*)/brand/nike(.*)$" "$1/manufacturer--nike" 

要获得以下输出,请删除 /brand/ 并将 nike 替换为 manufacturer--nike,最后删除后面的任何内容,即 /something

https://example.com/anything/manufacturer--nike

现在我可以为Puma 和其他每个品牌添加第二条规则,但我想有一种方法可以匹配品牌列表并使用一条规则,但我的 Google 技能让我无法找到解决方案.

有办法吗?

【问题讨论】:

  • 实现特定令牌以将 URL 与 匹配的规则列表是 列表。用另一个列表替换一个列表是没有意义的......

标签: regex .htaccess redirect


【解决方案1】:

如果品牌数量有限,那么您可以在正则表达式中使用alternation(例如nike|puma|brand 等)来匹配nikepumabrand

除此之外:要匹配nike/<something>,您至少应该检查该斜线,否则它将匹配nikeeeeenikey 等(虽然不一定是问题。)

例如:

RedirectMatch 301 "(.*)/brand/(nike|puma|brand)/" "$1/manufacturer--$2" 

不需要正则表达式末尾的(.*)$ - 只需删除 URL 路径的尾随部分。

$2 反向引用包含与第二个捕获(替代)子模式匹配的“品牌名称”。

重写网址的方法

澄清一下,这是一个外部重定向,不是“重写 URL”。

【讨论】:

  • 非常感谢。您检查斜线是对的,我认为该解决方案将完美运行。
猜你喜欢
  • 2016-03-25
  • 1970-01-01
  • 2022-11-27
  • 1970-01-01
  • 2012-05-01
  • 2014-10-21
  • 1970-01-01
  • 1970-01-01
  • 2013-02-27
相关资源
最近更新 更多