【问题标题】:.htaccess mod_rewrite 301 redirect with nested exceptions?.htaccess mod_rewrite 301 重定向嵌套异常?
【发布时间】:2012-03-25 03:09:00
【问题描述】:

在部署 .htaccess 之前,我需要一些帮助!

我想 301 重定向几乎从 elementalthreads.com 到 ethreads.com 的所有内容,不包括 blog/wp-content/uploads 和 /pommo。

我这样做对吗?:

RewriteEngine on
#exclude old uploads folder and /pommo
RewriteCond %{REQUEST_URI} !^/(blog/wp-content/uploads|pommo) [NC]
RewriteRule (.*) http://ethreads.com/$1 [R=301,L]

这会转移规范的页面排名吗?

这是我知道我需要帮助的地方:

  1. 旧站点有一个 wordpress 博客,我已将其克隆到新域中。我很想保留永久链接,几乎 1:1,例如: http://www.elementalthreads.com/blog/ethreads-now-on-amazon-com/ 重定向到
    http://ethreads.com/ethreads-now-on-amazon-com/(注意这里缺少 /blog/)

  2. 并且博客索引http://www.elementalthreads.com/blog/ 应该重定向到http://ethreads.com/blog/,这似乎是上述规则的一个例外,因为“/blog/”应该只保留在这里?

我对如何使用 regEx 或以其他方式定义最后两个条件/规则感到困惑。任何帮助将不胜感激!

【问题讨论】:

    标签: apache .htaccess mod-rewrite redirect


    【解决方案1】:

    这对我来说是正确的。但是,您不应该在不检查的情况下将其上线,确实没有什么可以阻止您对其进行测试。需要记住的一件事是浏览器可以缓存 301 响应代码,因此在测试时您应该使用 [R,L] 作为标志。满意后,在部署前添加 [R=301,L]

    点 (1) 和 (2) 都可以

    # only redirect the blog direcotry
    RewriteRule ^blog/?$            http://ethreads.com/blog/ [NC,R=301,L]
    
    # redirect all sub folders of blog to the new domain
    RewriteRule ^blog/([\w-])/?$    http://ethreads.com/$1/ [NC,R=301,L]
    

    【讨论】:

    • 谢谢!这对缓存非常有帮助。我想知道 301 的“永久”性质。您对如何为上面 # 的 1 和 2 中的 /blog 和永久链接添加 2 个额外的规则/条件有什么建议吗?
    • 谢谢!这很好用。我又添加了一条规则来处理 wordpress 类别和标签'RewriteRule ^blog/([^/]+)/([^/]+)/?$ ethreads.com/$1/$2 [NC,R,L]'。出于某种原因,我无法在这种情况下使用您的 '([\w-])' 模式。你能解释一下'\w-'是什么意思吗?我理解 '([^/]+)' 很好,但是很难用谷歌搜索你的模式是如何工作的。再次感谢!
    • \w 表示任何字母或数字或下划线字符。所以[\w-] 表示任何字母、数字、下划线或连字符。有意义吗?
    • 是的——确实如此。我想是这样的。非常感谢您的帮助!耶stackoverflow!
    猜你喜欢
    • 2014-08-11
    • 2021-02-08
    • 1970-01-01
    • 1970-01-01
    • 2011-12-31
    • 1970-01-01
    • 1970-01-01
    • 2015-05-06
    • 1970-01-01
    相关资源
    最近更新 更多