代码之家  ›  专栏  ›  技术社区  ›  M.Nguyen

Htaccess RewriteRule用于不同的URL以创建类似的链接

  •  0
  • M.Nguyen  · 技术社区  · 2 年前

    我在使用这些规则时遇到了问题:

    RewriteRule ^([a-z-]+)/([a-z-]+)-([0-9]+)$ /all.php?name=$1&m=$2&y=$3 [L,QSA,NC]
    
    RewriteRule ^([a-z-]+)/year-([0-9]+)$ /year.php?name=$1&y=$2 [L,QSA,NC]
    

    第二条规则不起作用

    当我尝试: /james/year-2023 它将根据第一条规则工作。

    我该怎么做 /james/january-2023 使用第一条规则和 /詹姆斯/2023年 遵守第二条规则?

    非常感谢。

    0 回复  |  直到 2 年前
        1
  •  0
  •   MrWhite    2 年前

    因为第一条规则中的regex更通用,并且与第二条规则所期望匹配的URL相匹配。

    你只需要颠倒这两条规则,所以更具体的规则是第一条:

    RewriteRule ^([a-z-]+)/year-([0-9]+)$ /year.php?name=$1&y=$2 [L,QSA,NC]
    
    RewriteRule ^([a-z-]+)/([a-z-]+)-([0-9]+)$ /all.php?name=$1&m=$2&y=$3 [L,QSA,NC]