高级.htaccess重定向问题

时间:2009-11-06 17:16:34

标签: apache .htaccess

我正在将自定义编码博客迁移到Wordpress,并且必须设置一个可以处理所有博客帖子的重定向。

我需要重定向:

/oldblogdirectory/Old_Blog_Posts_Looked_Like_This.htm

为:

/ newblogdirectory /新博客,帖子,看样这/

有关正则表达式的重定向的想法吗?

2 个答案:

答案 0 :(得分:2)

试试这个mod_rewrite规则:

RewriteEngine on
RewriteRule ^(oldblogdirectory/[^_]*)_([^_]*)_(.*) /$1-$2-$3 [N]
RewriteRule ^(oldblogdirectory/[^_]*)_(.*) /$1-$2
RewriteRule ^oldblogdirectory/(.+)\.htm$ /newdirectory/$1/ [L,R=301]

但是对于大写到小写的转换,你要么需要像internal tolower function这样的映射,要么你都使用PHP。

答案 1 :(得分:2)

Gumbo的方法肯定是这样做的。我制作了两个测试目录:

oldblogdir/archives/blog_posts_look_like_this.htm
newblogdir/archives/blog-posts-look-like-this

以下RewriteRules重定向成功。他们只是稍微改变了Gumbo的提议:

RewriteEngine on
RewriteBase /

RewriteRule ^(oldblogdir/archives/[^_]*)_(.*) $1-$2 [N]
RewriteRule ^oldblogdir/archives/(.*?)\.htm$ newblogdir/archives/$1 [R,NC,L]

请注意,[N]会导致重新评估.htaccess文件,直到RegEx不再匹配为止。因此,您应该将它放在文件的最顶层。