2017-05-31 4 views
0

Comment puis-je refaire cette config nginxApache try_files analogique

location/{ 
    try_files /public/$uri @app; 
} 

location @app { 
    fastcgi_pass php5-fpm; 
} 

}

de configuration d'Apache?

+0

Ceci est une question intéressante parce que les fichiers même php/publics seraient renvoyés en texte brut et l'emplacement sur le filtrage/public ne peut être utilisé parce que si le fichier n'existe pas se encore être passé en PHP. – pucky124

Répondre

0

C'est quelque chose que vous pouvez utiliser (besoin de tweak je suppose):

Alias /public /xxxxx/public 

RewriteEngine On 
RewriteCond %{REQUEST_URI} !^/public/ 
RewriteCond /xxxxx/public/%{REQUEST_URI} !-f 
RewriteCond /xxxxx/public/%{REQUEST_URI} !-d 
RewriteRule . "-" [H=application/x-httpd-php] 

RewriteCond %{REQUEST_URI} !^/public/ 
RewriteRule (.) /public/$1 [L,QSA] 

Le application/x-httpd-php est le gestionnaire php, il peut être différent sur votre configuration (fcgid-script/application/php ... Vérifiez le gestionnaire défini par votre configuration php.

0

Cela fait vraiment deux choses.

  1. Si le fichier existe dans le sous-répertoire public de root, retournez-le.
  2. Sinon, envoyez-le à php.

Ainsi, dans Apache, nous avons besoin de faire le premier test

RewriteCond %{DOCUMENT_ROOT}/public/%{REQUEST_URI} -f 
RewriteRule (.*) /public/$1 [L] 

RewriteCond met une condition sur la règle suivante, -f signifie que le fichier existe. Nous savons donc que le fichier existe dans le sous-répertoire public, donc appliquez la règle de réécriture de la requête dans le sous-répertoire public. L'indicateur L signifie qu'Apache considérera ceci comme la dernière règle de réécriture et ne traitera aucune autre règle de réécriture.

Maintenant pour la deuxième partie.

RewriteRule . "-" [H=application/x-httpd-php] 

Bien sûr, cela suppose que tous les modules apache appropriés sont installés et actifs, en particulier mod_rewrite et que RewriteEngine on a déjà été appelé. Il vaut la peine de mentionner que dans nginx et apache il y a beaucoup plus d'options qui doivent être définies pour que cela fonctionne correctement.

documents complémentaires ici: http://httpd.apache.org/docs/current/mod/mod_rewrite.html