Depois de muita pesquisa, consegui trabalhar URLs bonitos usando:
server {
listen 80;
server_name www.url.com;
rewrite ^/(.*) http://url.com/$1 permanent;
}
server {
listen 80;
server_name url.com;
access_log /var/www/url.com/logs/access.log;
error_log /var/www/url.com/logs/error.log;
location / {
root /var/www/url.com/public/;
index index.html index.htm index.php;
include /etc/nginx/mime.types;
try_files $uri $uri/ @extensionless-php;
}
location @extensionless-php {
rewrite ^(.*)$ $1.php last;
}
location ~ \.php$ {
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/url.com/public$fastcgi_script_name;
}
location /blog {
root /var/www/url.com/public;
index index.php;
try_files $uri $uri/ /blog/index.php?$args;
}
}
Parece funcionar. No entanto, para fins de SEO, gostaria de redirecionar permanentemente as solicitações de url.com/filename.php para o novo url.com/filename
Eu entendo que eu deveria estar usando rewrite ^/(.*)\.php$ http://url.com/$1 permanent;
no bloco de localização .php, mas como faço isso sem causar um loop infinito?
Tags nginx