Cria arquivos sem extensão através do analisador PHP no nginx

1

Devido a razões herdadas, preciso que o seguinte cenário funcione no nginx e pareço estar com dificuldades. Digamos que eu tenha um arquivo na raiz do documento chamado "info" sem nenhuma extensão de arquivo. Agora este é um arquivo PHP, mas ele não tem uma extensão e não pode ser renomeado por razões que não explicarei aqui. Como eu iria escrever uma configuração nginx para fazer este arquivo ser analisado pelo PHP.

Eu realmente tentei renomear este arquivo para info.php e depois adicionar o seguinte na minha configuração nginx, então eu tentei acertar http://{siteurl}/info esperando que ele re-escrevesse internamente para info.php , mas tudo o que ele fez foi cair até index.html .

location / {
        try_files @extensionless-php $uri $uri/ /index.html;
}

location @extensionless-php {
        rewrite ^(.*)$ $1.php last;
}

Agora sou muito novo no nginx e presumo que esteja faltando algo muito básico. Anteriormente, no apache, a configuração era assim para que este cenário funcionasse ...

    <LocationMatch "^/(info|...a few other files...)/?.*$">
            ForceType application/x-httpd-php
    </LocationMatch>

Qualquer ajuda é muito apreciada.

    
por Garry Welding 28.11.2013 / 09:27

3 respostas

1

Tente isso. Note que meu try_files é uma pequena reorganização do que você tem em seu exemplo. Também adicionei root , que deve corresponder ao seu caminho raiz da web.

location / {
    root /your/web/root/path
    try_files $uri $uri/ @extensionless-php;
    index index.php index.html;
}

location @extensionless-php {
    rewrite ^(.*)$ $1.php last;
}
    
por 28.11.2013 / 09:50
1

Finalmente descobri:

location /info {
    root /usr/share/nginx/www;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME /usr/share/nginx/www/info.php;
}

Na verdade, faz sentido agora, já que me preocupei em ler a documentação ...

    
por 28.11.2013 / 14:40
0

Isso é o que funcionou para mim:

## Your root already needs to be defined
# root /your/web/root/path
location / {
    try_files $uri $uri/ $uri.php =404;
    index index.php index.html;
}

Ao acertar um URL ( http://somedomain.com/some/path/action ), ele tentará primeiro some/path/action , depois some/path/action/[index.php] , depois some/path/action.php e, em seguida, falhará com um 404 se não encontrar o arquivo.

    
por 23.10.2015 / 11:27