【问题标题】:apache .htaccess redirect regexapache .htaccess 重定向正则表达式
【发布时间】:2022-01-20 12:56:37
【问题描述】:

我在 apache .htaccess 中需要这个重定向 301 规则:

/catalog/{category_slug}/{product_slug} 

/product/{product_slug}

示例:

/catalog/cat1/prod1 to /product/prod1
/catalog/cat1/prod2 to /product/prod2
/catalog/cat2/prod3 to /product/prod3

还有:

/en/catalog/abc/xyz to /en/product/xyz
/es/catalog/abc/xyz to /es/product/xyz
...
...

你能帮帮我吗?

tks 西蒙娜

【问题讨论】:

    标签: apache .htaccess


    【解决方案1】:

    将此添加到 .htaccess 文件的顶部:

    RewriteEngine On # no need to do this twice, once is enough
    
    RewriteRule ^([^\/]+\/)?catalog\/[^\/]*\/([^0-9].*) /$1product/$2 [R=302,QSA,L]
    

    确保在服务器上启用了 mod_rewrite。

    这将重定向:

    1. /catalog/abc/xyz/product/xyz
    2. /catalog/abc/123/xyz/product/123/xyz
    3. 由于QSA 标志,还使用查询字符串进行重定向。

    【讨论】:

    • 我也需要它来工作: /en/catalog/abc/xyz 到 /en/product/xyz /es/catalog/abc/xyz 到 /es/product/xyz ... 。 .. tks
    • @SimoneGrimani 好的,让我补充一下
    • @SimoneGrimani 立即尝试
    • 现在不行了,没有语言的第一个选项也坏了
    • @SimoneGrimani 立即尝试
    【解决方案2】:

    使用 mod_rewrite 在根 .htaccess 文件的顶部:

    RewriteEngine On
    
    RewriteRule ^catalog/[^/]+/([^/]+)/?$ /product/$1 [R=302,L]
    

    $1 反向引用包含来自前面RewriteRule 中捕获组的“{product-slug}”(第三个路径段)模式

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-31
      • 2018-01-17
      • 2011-08-30
      • 1970-01-01
      • 1970-01-01
      • 2012-09-29
      • 1970-01-01
      相关资源
      最近更新 更多