在htaccess中使用正则表达式进行301重定向

时间:2013-05-21 08:45:03

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

我有一个Wordpress博客,我将博客文章从我的博客重定向到我的博客,格式如下:

旧博客名为“新闻”,新博客简称为“博客” - 两者都存在于子目录中的同一个域中,如下所示。

旧'新闻'博客结构

http://www.example.com/news/new-android-os-3431

新'博客'博客结构

http://www.example.com/blog/new-android-os

基本上,这种重定向需要做两件事: -

  1. 重定向到'博客'目录
  2. 将帖子名称保留在相同的结构中,但删除URL末尾的最后一组数字
  3. 我有大约900多个帖子需要设置重定向 - 我知道我可以手动添加每个帖子,但这需要一些时间。任何人都可以指出这是否可以直接在htaccess文件中使用正则表达式来最小化此过程吗?

    我的htaccess目前看起来像这样:

    # BEGIN WordPress
    <IfModule mod_rewrite.c>
     RewriteEngine On
     RewriteBase /news/
     RewriteRule ^index\.php$ - [L]
     RewriteCond %{REQUEST_FILENAME} !-f
     RewriteCond %{REQUEST_FILENAME} !-d
     RewriteRule . /news/index.php [L]
    </IfModule>
    # END WordPress
    

1 个答案:

答案 0 :(得分:19)

使用mod_alias:

RedirectMatch 301 ^/news/(.+?)(-[0-9]+)?$ /blog/$1

或使用mod_rewrite:

RewriteEngine On
RewriteRule ^news/(.+?)(-[0-9]+)?$ /blog/$1 [L,R=301]