我正在尝试将以下 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;
}
}