首页 > 解决方案 > .htaccess 在 url 中使用多个连字符重定向

问题描述

我们已经移动了我们的网站并决定删除所有旧新闻,如果有办法重定向包含“-”的网址

这是我们重定向的一些 URL 的示例。

RedirectMatch 301 /climate-change-threatens-expose-cold-war-secrets/?$ /news

RedirectMatch 301 /countdown-to-armed-forces-day-begins-in-liverpool/?$ /news

RedirectMatch 301 /chilcot-report-the-key-findings/?$ /news

RedirectMatch 301 /cold-war-nuclear-base-uncovered-ice-melts/?$ /news

RedirectMatch 301 /corbyn-refuses-guarantee-support-nato-allies/?$ /news

RedirectMatch 301 /comment-if-were-in-a-cold-war-how-do-we-get-out/?$ /news

是否可以使用“word1-word2-word3-OrEvenMoreWords”来重定向任何内容

谢谢

标签: .htaccessredirect

解决方案


如果每个新闻帖子至少有 2 个单词,-那么以下内容就足够了:

RedirectMatch 301 ^[^\-]+(?:\-[^\-]+)+$ /news   # matches "my-post" or "my-long-post" but not "mypost" or "my--post"

^匹配 URL 的开头。
[^\-]匹配除-.
+保持匹配之前的规则,并确保至少匹配一个。
(?:开始一个非捕获组。
     \-匹配-字符。
     [^\-]匹配除-.
     +保持匹配之前的规则,并确保至少匹配一个。
)结束非捕获组。
+不断重复非捕获组,确保它至少匹配一次 - 该组以-至少一个字符开始并匹配到下一个字符,-因此我们允许a-b-c-d... $匹配 URL 的结尾,确保没有任何内容未解析。


推荐阅读