Я знаю самое лучшее средство — мозг.
1. Прочитать и понять что делает .htaccess
2. Написать нужные строчки в конфиге nginx.
Читаем:
RewriteCond %{REQUEST_URI} \.(png|gif|ico|swf|jpe?g|js|css|ttf|svg|eot|woff|yml|xml|zip|txt|doc)$
RewriteRule ^(.*) $1 [QSA,L]
Понимаем, что статика должна просто отдаваться как есть без попытки обрабатывать её в PHP.
Пришем
location ~ \.(png|gif|ico|swf|jpe?g|js|css|ttf|svg|eot|woff|yml|xml|zip|txt|doc)$ {
# ничего не нужно, просто отдаём файлы
}
Читаем
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_URI} \.(ini|ph.*)$
RewriteRule ^(.*) index.php [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L,QSA]
Тут два разных условия.
Первое — если файла не существует, второе — если запросили файл закнчивающийся на .ini или .ph<что-то> (кстати, регулярка идиотская, т.к. под неё попадает слишком много, например
my.physics.html).
При выполнении любого из них запрос должен быть передан в index.php.
Первое условие пишется стандартно
location / {
try_files $uri /index.php;
}
Второе
# скорее всего нужно что-то типа \.(ini|php|phps|php4|php5)$
# или хотя бы \.(ini|ph\w*)$
location ~ \.(ini|ph.*)$ {
rewrite ^ /index.php break;
fastcgi_pass 127.0.0.1:9002;
# и прочие fastcgi_*
}
Итого:
location / {
try_files $uri /index.php;
}
location ~ \.(png|gif|ico|swf|jpe?g|js|css|ttf|svg|eot|woff|yml|xml|zip|txt|doc)$ {
# ничего не нужно, просто отдаём файлы
}
location ~ \.(ini|ph.*)$ {
rewrite ^ /index.php break;
fastcgi_pass 127.0.0.1:9002;
# и прочие fastcgi_*
}