nginx codeigniter reescrever: Conflitos de nome do controlador com o diretório

1

Estou testando o nginx e portando minha configuração existente do apache para o nginx. Eu consegui redirecionar a URL do codeigniter com sucesso, mas estou tendo um problema com um controlador específico cujo nome coincide com um diretório na raiz do site.

Eu consegui fazer o trabalho do meu url codeigniter como no Apache, exceto que, eu tenho um url em particular que diz http://localhost/hello que coincide com um diretório hello na raiz do site. O Apache não teve nenhum problema com isso. Mas nginx rotas para este diretório em vez do controlador.

Minha estrutura de reencaminhamento é a seguinte

http://host_name/incoming_url => http://host_name/index.php/incoming_url

Todos os arquivos codeigniter estão na raiz do site.

Minha configuração nginx (partes relevantes)

location / {
    # First attempt to serve request as file, then
    # as directory, then fall back to index.html

    index index.php index.html index.htm;

    try_files $uri $uri/ /index.php/$request_uri;

    #apache rewrite rule conversion

    if (!-e $request_filename){
        rewrite ^(.*)/?$ /index.php?/$1 last;
    }

    # Uncomment to enable naxsi on this location
    # include /etc/nginx/naxsi.rules
}

location ~ \.php.*$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

    # With php5-cgi alone:
    fastcgi_pass 127.0.0.1:9000;
    # With php5-fpm:
    #fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
}

EDITAR:

minha configuração relevante do htaccess do apache

    # Set the default file for indexes
DirectoryIndex index.php

<IfModule mod_rewrite.c>
    # mod_rewrite rules
    RewriteEngine on
    # If the file is NOT the index.php file
    RewriteCond %{REQUEST_FILENAME} !index.php
    # If the file/dir is NOT real go to index
    RewriteCond %{REQUEST_FILENAME} !-f
    #RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [QSA,L]

</IfModule>

Sou novo no nginx e preciso de ajuda para descobrir esse conflito de diretório com o nome do Controller. Eu percebi essa configuração de várias fontes na web, e qualquer maneira melhor de escrever minha configuração é muito apreciada.

    
por palerdot 28.10.2013 / 08:44

0 respostas