我很难使用旧网址的一部分为重定向创建重写规则。例如:
旧网址: http://www.example.com/news/index.php/2014/11/07/my-blog-post-from-old-site 要么 http://www.example.com/news/index.php/2014/11/07/my_blog_post_from_old_site
新网址: http://www.example.com/2014/11/07/my-blog-post
从短划线中剥离后,新网址应该只包含永久链接的日期和前三个元素。即使我不确定是否可以使用.htaccess规则完成,但可以肯定可以使用PHP完成。
这是我的.httaccess规则
RewriteCond %{HTTP_HOST} ^example.com [NC,OR]
RewriteCond %{HTTP_HOST} ^www.example.com [NC]
RewriteRule ^(/?news/index.php/.*/[^/]*?)_([^/]*?_[^/]*)$ $1-$2 [N]
RewriteRule ^(/?news/index.php/.*/[^/]*?)_([^/_]*)$ $1-$2 [R=301]
RewriteRule ^news/index.php/([^/]+)-([^/]+)-(.*)$ http://www.example.com/$1-$2-$3 [L,R=301,NC]
答案 0 :(得分:2)
只需匹配块,直到遇到连字符(-
):
RewriteRule ^news/index\.php/([^-]+-[^-]+-[^-]+).* /$1 [R=301,L,NC]