J'ai posé cette question sur stackoverflow mais je n'ai pas eu beaucoup de réponses et je me demandais si c'était de la programmation ou un problème de serveur.
J'essaie de mettre en place un environnement cakephp sur un serveur Centos fonctionnant avec Nginx et Fact CGI. J'ai déjà un site wordpress qui tourne sur le serveur et un site phpmyadmin donc j'ai configuré PHP correctement.
Le problème est que je n'arrive pas à configurer correctement les règles de réécriture dans mon serveur virtuel pour que cake rende les pages correctement, c'est à dire avec le style et ainsi de suite. J'ai cherché autant que possible sur Google et le consensus principal sur les sites comme celui listé ci-dessous est que je dois avoir la règle de réécriture suivante en place
location / {
root /var/www/sites/somedomain.com/current;
index index.php index.html;
# If the file exists as a static file serve it
# directly without running all
# the other rewrite tests on it
if (-f $request_filename) {
break;
}
if (!-f $request_filename) {
rewrite ^/(.+)$ /index.php?url=$1 last;
break;
}
}
http://blog.getintheloop.eu/2008/4/17/nginx-engine-x-rewrite-rules-for-cakephp
Le problème est que ces réécritures supposent que vous exécutiez cake directement à partir du webroot, ce qui n'est pas ce que je veux faire. J'ai une configuration standard pour chaque site, c'est-à-dire un dossier par site contenant les dossiers suivants : log, backup, private et public. Public est l'endroit où nginx cherche ses fichiers à servir, mais j'ai installé cake dans private avec un lien symbolique dans public qui renvoie à /private/cake/.
Voici mon serveur virtuel
server {
listen 80;
server_name app.domain.com;
access_log /home/public_html/app.domain.com/log/access.log;
error_log /home/public_html/app.domain.com/log/error.log;
#configure Cake app to run in a sub-directory
#Cake install is not in root, but elsewhere and configured
#in APP/webroot/index.php**
location /home/public_html/app.domain.com/private/cake {
index index.php;
if (!-e $request_filename) {
rewrite ^/(.+)$ /home/public_html/app.domain.com/private/cake/$1 last;
break;
}
}
location /home/public_html/app.domain.com/private/cake/ {
index index.php;
if (!-e $request_filename) {
rewrite ^/(.+)$ /home/public_html/app.domain.com/public/index.php?url=$1 last;
break;
}
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/public_html/app.domain.com/private/cake$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
}
Maintenant, comme je l'ai dit, je peux voir l'index.php principal de cake et je l'ai connecté à ma base de données, mais cette page n'a pas de style, donc avant de continuer, j'aimerais la configurer correctement. Qu'est-ce que je fais de travers ? .
Merci Seanl