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

301 Redirect.htaccess-将以.html结尾的URL转换为相同的URL,但转换为目录名而不以.html结尾,.htaccess,redirect,.htaccess,Redirect,我非常感谢使用Apache.htaccess提供以下301重定向方面的帮助,因为我一直在思考如何做到这一点: 我需要转换: 致: 从原始文件结构可以做很多事情。组成原始URL的年份和月份,每个月和几年内都会更改和返回。i、 e.2015/03、2015/02、2015/01、2014/12等 结尾filename.html必须是新目录名的名称,而不包含结尾.html并添加结束“/” 这是我目前为止所做的,但它不起作用: RewriteRule http://blog.domain.com/(

我非常感谢使用Apache.htaccess提供以下301重定向方面的帮助,因为我一直在思考如何做到这一点:

我需要转换:

致:

从原始文件结构可以做很多事情。组成原始URL的年份和月份,每个月和几年内都会更改和返回。i、 e.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]

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

您可以尝试改用mod_别名:

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]

非常感谢你。它工作得很好。对于其他人,我使用了重写cond等第二个建议。