代码之家  ›  专栏  ›  技术社区  ›  Shinigami Ryoutaro

.htaccess正常重定向静态文件夹

  •  1
  • Shinigami Ryoutaro  · 技术社区  · 2 年前

    我有一个 .htaccess 将每个请求重定向到的文件 ./core/index.php 。但对于中的静态文件 ./node_modules/ ./assets/ 文件夹,我想为它们启用正常重定向。

    所以

    1. 如果要求: url/whatever/page/ ->重定向到: core/index.php
    2. 如果要求: url/assets/image/file.png ->获取: assets/image/file.png
    3. 如果要求: url/node_modules/css/file.css ->获取: node_modules/css/file.css

    我的当前代码:

    RewriteEngine On
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ core/index.php [L,QSA]
    
    2 回复  |  直到 2 年前
        1
  •  1
  •   arkascha    2 年前

    我真的不确定你所说的“我想为他们启用正常重定向”是什么意思。。。在我看来,您实际显示的示例似乎根本不希望对这两个基本路径应用任何重写或重定向。如果是这样,那么有两种选择:

    任一使用条件:

    RewriteEngine On
    RewriteCond %{REQUEST_URI} !^/assets/
    RewriteCond %{REQUEST_URI} !^/node_modules/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ core/index.php [L,QSA]
    

    或明确的例外情况:

    RewriteEngine On
    RewriteRule ^/?assets/ - [END]
    RewriteRule ^/?node_modules/ - [END]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ core/index.php [L,QSA]
    
        2
  •  1
  •   Hind Sagar Biswas    2 年前

    因此,您可以做的是,首先检查它是否指向资产,然后重定向到那里,然后查找node_modules。如果现在是这样,那么如果没有满足任何条件,则重定向到索引:

    RewriteEngine On
    
    RewriteCond %{DOCUMENT_ROOT}/assets/$1 -f
    RewriteRule ^(.+) assets/$1 [L]
    
    RewriteCond %{DOCUMENT_ROOT}/node_modules/$1 -f
    RewriteRule ^(.+) node_modules/$1 [L]
    
    RewriteCond %{THE_REQUEST} \s/assets/ [NC,OR]
    RewriteCond %{THE_REQUEST} \s/node_modules/ [NC,OR]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ core/index.php [L,QSA]
    
    推荐文章