我非常感谢使用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]
答案 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]