代码之家  ›  专栏  ›  技术社区  ›  Phil

.htaccess正则表达式需要将尾部正斜杠设置为可选

  •  7
  • Phil  · 技术社区  · 15 年前

    RewriteRule ^([a-zA-Z0-9]+)$ u.php?$1|$2
    

    http://foo.bar/abcde 将重定向到 http://foo.bar/u.php?abcde

    我需要做的是 http://foo.bar/abcde/ (带尾随的正斜杠)并重定向到

    因此,如果它存在,我需要删除重写规则中$1的最后一个正斜杠。我该怎么做?我是apache新手,尝试过许多不同的正则表达式规则,但都做不好。

    1 回复  |  直到 15 年前
        1
  •  22
  •   Gumbo    15 年前

    /? $ 在模式的末尾:

    RewriteRule ^([a-zA-Z0-9]+)/?$ u.php?$1
    

    # remove trailing slash
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule (.*)/$ /$1 [L,R=301]
    # add trailing slash
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule .*[^/]$ /$0/ [L,R=301]