我希望htaccess Redirect 301使用正则表达式执行以下操作:
到
新网址的3个目标是
删除/文件夹/
用 -
用shtml替换htm
答案 0 :(得分:1)
最好我知道,如果没有RewriteMap,你的观点#2就无法完成,这需要一些讨厌的配置或多个规则。
此实现应该是通用的,适用于任意数量的下划线,但它的价格昂贵,因为它可能会触发许多重定向(事实上,如果您的路径中有大量下划线,则可能足以在浏览器中触发重定向错误):
RewriteBase /
RewriteRule ^(folder/[^_]*)_(.*\.html?)$ /$1-$2 [L,R=301]
RewriteRule ^folder/(*+)\.html?$ /$1.shtml [L,R=301]
替代方案包括根据需要枚举用例,或者(更好的是,我怀疑)将请求重写为perl或php脚本并从那里执行regexp_replace + redirect 301。
RewriteBase /
RewriteRule ^folder/(*+)\.html?$ /folder/redirect.php [L,QSA]
答案 1 :(得分:0)
RewriteEngine On
RewriteBase /
RewriteRule ^folder/([a-z]+)_(\d+)_(\d+)\.htm$ http://example.com/$1-$2-$3.shtml [L,R=301]