【发布时间】:2011-05-20 06:28:31
【问题描述】:
我希望 htaccess 重定向 301 使用正则表达式执行以下操作:
到
新网址的三个目标是
删除/文件夹/
将所有 _ 替换为 -
将 htm 替换为 shtml
【问题讨论】:
我希望 htaccess 重定向 301 使用正则表达式执行以下操作:
到
新网址的三个目标是
删除/文件夹/
将所有 _ 替换为 -
将 htm 替换为 shtml
【问题讨论】:
据我所知,如果没有 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]
【讨论】:
RewriteEngine On
RewriteBase /
RewriteRule ^folder/([a-z]+)_(\d+)_(\d+)\.htm$ http://example.com/$1-$2-$3.shtml [L,R=301]
【讨论】: