Je veux rediriger http vers https avec
rewrite ^(.*)$ /$1.php;
Mon fichier virtualhost nginx:
server {
listen 80;
server_name domain.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name domain.com;
root /var/nginx/html;
ssl_certificate /home/domain.crt
ssl_certificate_key /home/domain.key
location / {
if (!-e $request_filename){
rewrite ^(.*)$ /$1.php;
}
try_files $uri $uri/ /index.html;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/www;
}
# pass the PHP scripts to FastCGI server listening on /var/run/php5-fpm$
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_nam$
include fastcgi_params;
}
}
… Mais cela me donne une boucle de redirection. Quelqu'un peut-il m'indiquer ce que je fais mal?
if (!-e $request_filename){
rewrite ^(.*)$ /$1.php;
}
try_files $uri $uri/ /index.html;
Que se passe-t-il si /$1.php
n'existe pas non plus? Malheureusement, je ne suis pas un expert sur Nginx, mais sur Apache, ce type de réécriture peut entraîner une boucle de réécriture (vous devez vérifier que le fichier existe avant de le réécrire).
Ceci ne devrait-il pas être réécrit avec try_files
seulement ...? Par exemple:
try_files $uri $url.php $uri/ /index.html;