O que é nginx igual para o meu mod_rewrite de htaccess?

3

Anteriormente eu estava usando o linode VPS executando o Apache para o meu site da CodeIgniter. Hoje instalei o nginx e a página de destino do meu site está chegando, mas as outras páginas que estão usando o htaccess para reescrever o URL não estão chegando. Este é o meu htaccess,

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1

Qual é o nginx igual para o meu htaccess? Também há alguma mudança que eu preciso fazer na minha configuração e aplicação codeigniter ?? ..

Para o protocolo URI na configuração codeigniter, estou usando

$config['uri_protocol'] = 'PATH_INFO';

Isso funcionará com o nginx ?? ..

    
por Arun David 04.03.2012 / 10:02

2 respostas

6

Como não há um equivalente ao arquivo .htaccess (ou seja, sem arquivos de configuração no nível de diretório), é necessário atualizar a configuração principal e recarregar o nginx para que as alterações entrem em vigor.

A configuração acima do Apache essencialmente lê "se o caminho fornecido não é um arquivo ou diretório existente, redirecione para index.php, anexando o caminho".

No Nginx, você usará a diretiva try_files para realizar a mesma coisa:

location / {
        try_files $uri $uri/ @ci_index;
}

location @ci_index{
        rewrite ^(.*) /index.php?$1 last;
}

Ao contrário do Apache - se as instruções forem melhor evitadas nas configurações do Nginx.

Em algumas configurações, você pode evitar o índice nomeado e reescrever e simplesmente usar /index.php como o terceiro caminho para try_files (e o codeigniter deve obter o caminho de $_SERVER[$config['uri_protocol']] .

Quanto ao uso de PATH_INFO - verifique seu arquivo fastcgi_params (que você espera incluir no seu bloco de localização do php) e olhe:

fastcgi_param  PATH_INFO          $fastcgi_path_info;

Você também pode usar $config['uri_protocol'] = "REQUEST_URI"

Para qualquer opção escolhida, verifique a saída de print_r($_SERVER) para verificar quais variáveis do servidor foram definidas e para o que elas foram configuradas (elas devem corresponder ao que você especificou no seu bloco de localização do PHP e no arquivo fastcgi_params ).

    
por 04.03.2012 / 10:54
0

Eu acho que este link irá ajudá-lo a descobrir muito adicionado ao ponto do @ cyberx86. link

    
por 04.03.2012 / 17:22