【问题标题】:Help with 301 redirect (Simple concept, per directory control)帮助 301 重定向(简单的概念,每个目录控制)
【发布时间】:2026-01-22 23:40:01
【问题描述】:

我正在尝试让一组 301 重定向为客户站点工作,但我有点卡住了。

我有大约 17 个不同的目录,其中包含我要移至 Wordpress 的 .html 内容文件。我要做的是创建一个简单的、带有重定向的单个 .htaccess 文件,这将允许我将目录中的所有 .html 文件重定向到没有扩展名的 wordpress URL:

手动重定向示例:

重定向 301 /blog/2009/04/post1.html /blog/2009/04/post1/
重定向 301 /blog/2009/04/post2.html /blog/2009/04/post2/

尝试创建如下规则:

重写规则 ^/blog/2009/04/(.*?).html$ /blog/2009/04/$1/ [R=301,NC,L]

$1 是后缀为 / 的文件名(减去 .html)

我无法确定 ^/blog/2009/04/(.*?).html$ 是否意味着它只会重定向到这个特定的目录,并且会重定向到正确的位置。

我显然想为我所有指定的内容目录复制这个 ReWriteRule...

谁能指出我正确的方向?

谢谢,

【问题讨论】:

    标签: .htaccess http-status-code-301


    【解决方案1】:

    是的,您的规则只会重定向到 2009/04 目录。我想你想要:

    RewriteRule ^/blog/([0-9]+)/([0-9]+)/(.*?).html$ /blog/$1/$2/$3/ [R=301,NC,L]
    

    这也会将/blog/2008/12/post.html 重定向到/blog/2008/12/post/ 等等。虽然由于您的格式几乎完全相同,但也许这会更容易?

    RewriteRule ^/blog/(.*?).html$ /blog/$1/ [R=301,NC,L]
    

    【讨论】:

    • 我是否可以使用类似:RewriteRule ^/services/(.*?).html$ /services/$1/ [R=301,NC,L] 对于非博客目录?
    • 是的,如果(.*?) 中的位与您放置$1 的位置相同。