Convertendo o nginx para o Apache reescreve

2

Estou tentando configurar o Symfony a partir de um site existente que está no nginx. Minha máquina local é o Apache e este é o esquema de redirecionamento no nginx. Como faço para escrever isso usando RewriteRules?

location / {
               # try to serve file directly, fallback to rewrite
               try_files $uri @rewriteapp;
       }

       location @rewriteapp {
               # rewrite all to app.php
               rewrite ^(.*)$ /app.php/$1 last;
       }

       location ~ ^/(app|app_dev|config)\.php(/|$) {
               fastcgi_split_path_info ^(.+\.php)(/.*)$;
               include fastcgi_params;
               fastcgi_intercept_errors on;
               fastcgi_pass php_upstream; # Upstream on top of file
               fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
               fastcgi_param HTTPS off;
       }

}
    
por Michael 22.08.2016 / 14:44

1 resposta

0

location / {
               # try to serve file directly, fallback to rewrite
               try_files $uri @rewriteapp;
       }

       location @rewriteapp {
               # rewrite all to app.php
               rewrite ^(.*)$ /app.php/$1 last;
       }

A primeira parte parece ser a única reescrita. Isto parece que poderia ser escrito da seguinte forma usando mod_rewrite no Apache na raiz .htaccess file:

# Enable trailing pathname information (if not already)
AcceptPathInfo On

Options +FollowSymLinks -MultiViews

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /app.php/$0 [L]

Reescreva internamente todas as solicitações que não mapeiam arquivos físicos ou diretórios para /app.php/<requested-url-goes-here> .

Como isso usa informações do caminho à direita na URL ( /$0 ), você precisa ter certeza de que o servidor permite isso, caso contrário, você receberá um 404 Not Found imediatamente. No entanto, isso geralmente é ativado por padrão (embora dependa do manipulador).

    
por 22.08.2016 / 16:48