[решено] Аналог url.rewrite-once на nginx

На днях решил попробовать заменить lighttpd на nginx. Однако никак не могу побороть конструкцию вида (lighttpd.conf):
url.rewrite-once = ( "^/api/(.*)$" => "/m/microcosm.php/$1" )

Скрипт не мой — wiki.openstreetmap.org/wiki/Microcosm. Используется для хранения «секретных» данных из JOSM.
Всё, что мне удалось — при вводе адреса server/api/ меня перебрасывает на server/m/microcosm.php
  • Вопрос задан
  • 4014 просмотров
Пригласить эксперта
Ответы на вопрос 2
avalak
@avalak
В общих чертах это будет примерно так. Microcosm не использовал, вероятно придётся немного допилить конфигурацию.

    ## Microcosm
    location /api/
    #location ~ ^/api/(.*)
    {
        ## NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
        fastcgi_pass php_backend; # указать upstream
        
        root /path/to/microcosm/m/; # каталог с microcosm.php или прописать $document_root
        fastcgi_index microcosm.php;

        include fastcgi_params;
        #fastcgi_param QUERY_STRING $query_string;
        #fastcgi_param REQUEST_URI $1;
        fastcgi_param SCRIPT_FILENAME $document_root/microcosm.php;
    }
Ответ написан
iSage
@iSage
rewrite ^/api/(.*)$ /m/microcosm.php/$1 break;
либо
rewrite ^/api/(.*)$ /m/microcosm.php/$1 last;
ежели вам после этого надо обрабатывать другие локейшны (например единый локейшн, ловящий *.php).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы