首页 > 解决方案 > Nginx 重写:将 .php 文件重定向到它的相关重写 url?

问题描述

我有 nginx 重写配置如下:

location ~ \.php$ {
    try_files $uri /index.php =404;
    fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

location / { 
    try_files $uri $uri.php $uri/ =404;
    rewrite ^/about/$ /about.php;
}

/about/这个 url 工作正常,并显示about.php文件的内容。

但是我希望当有人尝试about.php直接访问时,他们应该得到任何一个,/about/或者如果相关的文件 url 重写不存在,那么他们应该得到 404。

请帮助我如何做到这一点?

标签: phpnginxurl-rewritingnginx-location

解决方案


这可能对你有用。

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

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

参考:https ://www.digitalocean.com/community/questions/how-to-remove-php-using-nginx


推荐阅读