nginx перенаправление запросов

Как-то, мне пришлось поднимать сайт на nginx, который был заточен под apache. В сети есть конвертреы конфигов, о чем я раньше не знал. Но конвертированный конфиг будет работат не всегда.

Итак, задача: нужно редиректить все запросы на опреденный файл. Файл будет не стандартный .php, а .pphp например.

Так выглдяит исходный файл htaccess:

RewriteEngine on

RewriteBase /


RewriteRule ^(index\.html|index|"")$ index.pphp?page=main&type=text [L]

RewriteRule ^(ajax|js) index.pphp?type=text [L]

RewriteRule \.(html|htm)$ index.pphp?type=text [L]

RewriteRule \.(php|cgi)$ index.pphp?type=cgi [L]

После долгих плясок с бубном я привел данный конфиг к такому виду под nginx: (/etc/nginx/sites-enabled/testsite)

server {

        server_name testsite.local;

        root /var/www/testsite;

        index index.pphp;


rewrite ^/(index\.html|index|"")$ /index.pphp?page=main&type=text break;

rewrite \.(html|htm)$ /index.pphp?type=text break;

rewrite \.(php|cgi)$ /index.pphp?type=cgi break;


location /ajax {

rewrite ^(.*)$ /index.pphp?type=text break;

}


location /js {

rewrite ^(.*)$ /index.pphp?type=text break;

}


location ~ \.(php|php5|phtml)$ {

fastcgi_split_path_info ^(.+\.php)(/.+)$;

#NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

include fastcgi_params;

fastcgi_index index.pphp;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

fastcgi_intercept_errors on;

fastcgi_pass unix:/var/run/php5-fpm.sock;

       }

}
Чтоб php5-fpm работал с расширениями отличными от php, нужно прописать ему в настройках /etc/php5/fpm/pool.d/www.conf
security.limit_extensions = .php .pphp
Tags: 

Комментарии

Добавить комментарий