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?
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?
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.
Cela fait vraiment deux choses.
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
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