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

htaccess:如何在URL中添加缺少的斜杠,但忽略文件和特殊URL?

  •  1
  • Blackbam  · 技术社区  · 6 年前

    由于我的web项目有时会抛出404,如果尾部斜杠丢失,我总是希望我的服务器添加尾部斜杠到url。因此,我在htaccess中使用了以下模式:

    # ################################## #
    #      Redirect URLs which are not files to their trailing slash equivalent #
    # ################################## #
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)([^/])$ /$1$2/ [L,R=301]
    

    看起来不错,但后来我意识到

    http://www.my-awesome-website.com/theme/base.css?ver=1995

    正在转换为

    http://www.my-awesome-website.com/theme/base.css/?ver=1995

    这显然是不可取的,使网站崩溃。如何重写此规则,以确保不包括对文件(.php、.jpg、.html等)的任何请求?

    1 回复  |  直到 6 年前
        1
  •  1
  •   anubhava    6 年前

    您可以尝试这个规则(假设您在非文件请求中没有点):

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^([^.]+)([^./])$ %{REQUEST_URI}/ [L,R=301,NE]
    

    请确保在新浏览器中对此进行测试,以避免使用旧缓存。