【问题标题】:HTACCESS : RegEx match replace for URLHTACCESS : 正则表达式匹配替换 URL
【发布时间】:2011-05-20 06:28:31
【问题描述】:

我希望 htaccess 重定向 301 使用正则表达式执行以下操作:

http://example.com/folder/abc_123_123.htm

http://example.com/abc-123-123.shtml

新网址的三个目标是

  • 删除/文件夹/

  • 将所有 _ 替换为 -

  • 将 htm 替换为 shtml

【问题讨论】:

    标签: regex .htaccess


    【解决方案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]
    

    【讨论】:

      【解决方案2】:
      RewriteEngine On
      RewriteBase /
      RewriteRule ^folder/([a-z]+)_(\d+)_(\d+)\.htm$ http://example.com/$1-$2-$3.shtml [L,R=301]
      

      【讨论】:

        猜你喜欢
        • 2012-05-16
        • 2013-12-06
        • 2021-04-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-30
        • 2010-11-11
        • 2011-10-11
        相关资源
        最近更新 更多