从nginx的URL中删除.php扩展名 [英] remove .php extension from url in nginx

查看:88
本文介绍了从nginx的URL中删除.php扩展名的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个正在运行的Nginx服务器,并且想要从我的文件中删除.php扩展名.我已经尝试过一些方法,但是我唯一能做到的就是打破了fastcgi处理程序,导致下载php文件.使用以下配置,服务器可以正常运行:

i have a nginx server running and want to remove the .php extension from my files. I have allready tried a few things but the only thing i managed to accopmplish was breaking the fastcgi proccessing leading into downloading php files. The server is running fine with the following configuration:

##
# Virtual Host configuration for example.com
##

server {
        listen 80;
        listen [::]:80;
        server_name example.com www.example.com;
        return 301 https://www.example.com$request_uri;
}



server {
        listen 443 ssl;
        listen [::]:443 ssl;

        ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GC$
        ssl_prefer_server_ciphers on;
        ssl_dhparam /etc/letsencrypt/dhparams.pem;

        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

        root /usr/share/nginx/html/example/;
        index index.php;

        server_name example.com www.example.com;

        location / {
                try_files $uri $uri/ =404;
        }

        location /uploads {
                deny all;
        }

        error_page 404 /templates/404.php;

        location ~ \.php$ {
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                include fastcgi.conf;
                fastcgi_intercept_errors on;
        }

        location ~*  \.(?:ttf|ttc|otf|eot|woff|font.css|jpg|jpeg|png|gif|ico|css|js)$ {
                expires 365d;
                access_log off;
                add_header Cache-Control "public";
        }

        location ~ /\. {
                deny  all;
        }
}

感谢您的努力和时间.

推荐答案

##
# Virtual Host configuration for example.com
##

server {
        listen 80;
        listen [::]:80;
        server_name example.com www.example.com;
        return 301 https://www.example.com$request_uri;
}



server {
        listen 443 ssl;
        listen [::]:443 ssl;

        ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GC$
        ssl_prefer_server_ciphers on;
        ssl_dhparam /etc/letsencrypt/dhparams.pem;

        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

        root /usr/share/nginx/html/example/;
        index index.php;

        server_name example.com www.example.com;

        location / {
                try_files $uri $uri/ @extensionless-php; // add @extensionless-php
        }

        location /uploads {
                deny all;
        }

        error_page 404 /templates/404.php;

        location ~ \.php$ {
                try_files $uri =404; // add this
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                include fastcgi.conf;
                fastcgi_intercept_errors on;
        }

        location @extensionless-php {         // add this block
                rewrite ^(.*)$ $1.php last;
        }


        location ~*  \.(?:ttf|ttc|otf|eot|woff|font.css|jpg|jpeg|png|gif|ico|css|js)$ {
                expires 365d;
                access_log off;
                add_header Cache-Control "public";
        }

        location ~ /\. {
                deny  all;
        }
}

从此站点 http://www.tweaktalk .net/60/nginx-remove-php-file-extension-from-url

这篇关于从nginx的URL中删除.php扩展名的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆