nginx 重写为按字母顺序排列的子目录

nginx 重写为按字母顺序排列的子目录

我正在尝试将以下 Apache mod_rewrite 规则转换为适当的 nginx 格式:

RewriteCond %{REQUEST_FILENAME} (.*)/([^\/])([^\/]+)/?$
RewriteCond %1/%2/%2%3 -d
RewriteRule ^/?.* /%2/%2%3 [L] 

实际上,该规则会重写裸目录请求,根据第一个字符(区分大小写)将它们放置在父目录中,依此http://example.com/foobar类推http://example.com/f/foobar

其余所有内容要么是静态内容,要么是 PHP,并通过 FastCGI 传递,并且有location处理程序来处理它们。

答案1

好吧,你会在第二次中丢失目录测试RewriteCond,但是:

rewrite ^/([^/])([^/]+)/?$ /$1/$1$2 last;

答案2

    location ~ /([^/])([^/]+)/?$ {
        set $firstletter $1;
        set $sub $2;
        if (-d $request_filename) {
            rewrite ^ /$firstletter/$firstletter$sub last;
        }
    }

相关内容