我正在将网站从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
答案 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]