【问题标题】:Regex not working for RedirectMatch正则表达式不适用于 RedirectMatch
【发布时间】:2017-09-25 17:30:35
【问题描述】:

我的网站上有以下 URL,在进行一些网站测试时无意中被编入索引。我正在尝试将 URL 重定向到我网站上的正确页面。无论出于何种原因,我都无法让重定向按预期实际工作。

这是在我的网站上编入索引的网址

domain.com/wa/-county/communityname

有时社区实际上是一个城市,需要重新定向。该 URL 实际上应该被重定向到:

domain.com/wa/cityname

对于社区实际上是一个城市的情况。

我认为,这就是我认为对我的作品造成影响的部分。

/-county/ 需要明确匹配该文本。我在结构所在的网站上有一些 URL 实例:

domain.com/wa/king-county/selah

网址是动态生成的。在这种情况下,站点的 Itemid 是导致县名称king 生成的原因。已编入索引的 URL 只是在没有 URL 的县名部分的情况下被编入索引。

这是我目前尝试过的正则表达式和重定向匹配。

RedirectMatch 301 (\/-county\/)(.+$) /wa/$2

现在我的理解是

(.*$) = $2

谁能帮我解释一下这个主题?

这是Regex101 Test的链接

【问题讨论】:

  • 试试这个.. regex101.com/r/PPaMNr/3 (\/[^\/]*?-county\/)(.+$) 你是对的 $2 是比赛中的第二组(.+$)。第一组 $1 是 (\/[^\/]*?-county\/) 匹配的所有内容
  • @bulbus 我尝试实现您在 regex101 上发布的代码。 RedirectMatch 永远不会捕获 url 并重定向。不过,Regex 本身看起来确实不错。
  • 知道了!您需要捕获更多组,请参阅我的其他评论。

标签: regex .htaccess


【解决方案1】:

您可以将此规则用作您的第一个规则站点根 .htaccess:

RedirectMatch 301 ^/([\w-]+)/-county/(.+)$ /$1/$2

确保在测试此更改时清除浏览器缓存。

【讨论】:

  • 我在 RewriteEngine On 之后立即添加了这一行,但它什么也没做。在 3 个不同的浏览器中测试。
  • 他想确保http://example.com/wa/king-county/selah 变成http://example.com/wa/selah
  • 他想确保http://example.com/wa/king-castle-county/selah 变成http://example.com/wa/selah 或者我想。
  • 1. regex101 不是重写规则的测试网站。 2. 请只测试我提供的规则。 3..*当然会匹配任何东西。
  • 我的 htaccess 文件由于某种原因停止了重定向。我已将您的正则表达式规则添加到一个新的 htaccess 文件中,它似乎运行良好。感谢@anubhava 的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
  • 1970-01-01
  • 2013-05-01
  • 2013-09-08
  • 2019-08-26
相关资源
最近更新 更多