301重定向.htaccess - 将以.html结尾的URL转换为相同但转换为目录名而不以.html结尾

时间:2015-03-05 04:08:11

标签: .htaccess redirect

我非常感谢使用Apache .htaccess对以下301重定向的帮助,因为我不知道如何执行此操作:

我需要转换: http://blog.domain.com/2015/03/filename.html

于: http://www.domain.com/blog/filename/

原始文件结构有很多工作要做。构成原始URL的年份和月份,每月更改并返回几年。即2015 / 03,2015 / 02,2015 / 01,2014 / 12等......

结尾的filename.html需要是新目录名的名称,而不是结尾.html并添加结尾' /'

这是我到目前为止所做的,但它不起作用:

RewriteRule http://blog.domain.com/([0-9]+)/([0-9]+)/(.*)\.html$ http://www.domain.com/blog/$3 [R=301,L]

1 个答案:

答案 0 :(得分:0)

您不能在重写规则的正则表达式中包含网址的http://domainname/部分,只有2015/03/filename.html部分用于任何匹配。

您可以尝试使用mod_alias:

RedirectMatch 301 ^/[0-9]{4}/[0-9]{2}/([^/.]+)\.html$ http://www.domain.com/blog/$1/

或者如果您已经有重写规则,最好坚持使用mod_rewrite:

RewriteCond %{HTTP_HOST} ^blog\.domain\.com$ [NC]
RewriteRule [0-9]{4}/[0-9]{2}/([^/.]+)\.html$ http://www.domain.com/blog/$1/ [L,R=301]