mod_rewrite - 重定向到root并用破折号替换下划线

时间:2016-10-12 14:19:05

标签: regex apache .htaccess mod-rewrite

我一直在为此烦恼几个小时 - 试图掌握mnod_rewrite的语法,基本上,我正在迁移一个网站,以便网址如下:

http://www.somedomain.co.uk/news/article/a_blog_post

变为

http://www.somedomain.co.uk/a-blog-post

这里的两个关键点是删除" / news / article"用破折号替换下划线。

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^/?news/article$
RewriteRule ^([^_]*)_([^_]*_.*)$ $1-$2 [N]

RewriteCond %{REQUEST_URI} ^/news
RewriteRule ^([^_]*)_([^_]*)$ $1-$2 [N]

RewriteRule ^news/article/(.*)$ /$1 [L,R=301]

我似乎无法启动RewriteCond。请帮忙!

1 个答案:

答案 0 :(得分:1)

你可以这样做:

RewriteEngine On

# remove /news/article/ when there is no _ left
RewriteRule ^news/article/([^_]+)$ /$1 [L,R=301,NC,NE]

# use recursion based rule to repalce _ by -
RewriteRule ^(news/article/[^_]*)_+(.*)$ $1-$2 [N,DPI]