301使用一系列例外重定向所有根级页面

时间:2015-05-20 14:43:35

标签: .htaccess mod-rewrite redirect

我正在将网站从Wordpress迁移到新平台(Craft CMS),我需要通过.htaccess设置一些301重定向。

旧网站中的博客文章位于根目录中,我需要将它们全部重定向到/ blog /文件夹(slug是相同的)。当然,因为它们位于根域中,所以有一堆页面不会被重定向 - 我需要从重定向中排除这些(及其子页面)。

我该怎么做?我尝试使用可以从搜索中搜集的信息来拼凑一些东西,但我最终得到了一个重定向循环:

RewriteCond %{REQUEST_URI} !^/$ [OR]
RewriteCond %{REQUEST_URI} !^/(blog|about-bluegg-creative|what-we-do|what-we-do|doodles|contact|legal-stuff|admin) [NC]
RewriteRule (.*) blog/$1 [R=301,L]

可能值得一提的是,我的.htaccess还有其他重定向,所以解决方案需要很好地与这些重定向。以下是相关部分的要点:https://gist.github.com/hamishtaplin/c8d5e39d4621f56038d8

1 个答案:

答案 0 :(得分:2)

您不希望[OR]标志。这样做的逻辑是两个否定匹配,这意味着其中任何一个都会通过,因为你只需要否定一个或其他

你只想:

RewriteCond %{REQUEST_URI} !^/$
RewriteCond %{REQUEST_URI} !^/(blog|about-bluegg-creative|what-we-do|what-we-do|doodles|contact|legal-stuff|admin) [NC]
RewriteRule (.*) blog/$1 [R=301,L]