Qual servidor web tem melhor sintaxe de reescrita que imita o Apache?

2

Como a maioria dos projetos de código aberto inclui regras mod_rewrite para trabalhar com o Apache, eu preciso convertê-las para trabalhar com lighttpd ou nginx. Qual servidor web permite converter as regras exatamente para o equivalente do Apache? Se ambos podem ser convertidos exatamente qual deles tem sintaxe melhor e opções avançadas que imitam melhor o Apache?

Por exemplo, vou usar um .htaccess do Wordpress.

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
    
por kovert 02.06.2009 / 02:28

4 respostas

7

O nginX parece ser o caminho a percorrer se você está tentando manter as regras de reescrita.

Isso pode ser feito assim:

if (!-e $request_filename) {
  rewrite ^([_0-9a-zA-Z-]+)?(/.*) $2  break;
  rewrite ^([_0-9a-zA-Z-]+)?(/.*\.php)$ $2 last;
  rewrite ^ /index.php last;
}

Mas parece que o poder do nginX é ter regras menores e menos complexas, então essa pode ser a melhor maneira de substituir isso:

if (!-e $request_filename) {
  rewrite ^ /index.php last;
}
    
por 02.06.2009 / 13:18
1

Para fazer uma resposta completa para os próximos visitantes, o lighttpd suporta regras de reescrita, embora eles não suportem diretamente o equivalente das tags -f e -d para verificar a existência de um arquivo e diretório com o mesmo nome primeiro .

Existem atualmente três soluções:

  1. Aguarde até que o recurso 985 seja implementado na distribuição padrão, o que normalmente deve acontecer no próximo 1.4.23. Ou remova sua própria versão.
  2. Use o mod_magnet do lighttpd para testar isso.
  3. Coloque seus arquivos estáticos em um diretório fixo, como mídias, e faça uma exceção para esse diretório, como:

    $HTTP["host"] == "yoursite" {
        # all other config here ...
        alias.url = (
            "/medias" => "/var/www/yoursite/public/medias"
        )
        url.rewrite-once = (
            "^/medias/(.*)" => "$0",
            "^/(.*)$" => "/index.php/$1",
            "^/$" => "/index.php",
        )
    }
    
por 03.06.2009 / 14:10
0

Talvez procure no servidor da web "Cherokee". É uma alternativa leve e rápida ao Apache e possui alguns recursos bem legais.

    
por 02.06.2009 / 13:36
0

Independentemente de qual servidor web "light" é mais rápido (e eles são todos muito mais rápidos que o apache) ... Eu direi isso para o Cherokee, a interface web administrativa é muito fácil de se trabalhar. Obviamente, por ser baseado na web, a configuração é muito diferente do apache. Eu chamaria isso de um agradável diferente, não um irritante diferente.

mas no final do dia ..., somente o Apache é o Apache. A força do Apache é sua flexibilidade no nível AAA.

    
por 01.09.2011 / 18:32