如何在Nginx中移除URL地址中的.php后缀
配置修改方案
你需要对现有/etc/nginx/sites-available/default文件做三处调整:
1. 修改location /匹配规则
将原有location /块替换为如下内容:
location / { # 优先匹配真实存在的文件、目录,无匹配则进入php重写逻辑 try_files $uri $uri/ @rewrite-php; # 访问带.php后缀的地址时自动301跳转到无后缀地址,避免重复内容 if ($request_uri ~ ^/(.*)\.php(\?.*)?$) { return 301 /$1$is_args$args; } }
2. 新增php重写规则块
在location /块之后新增如下命名匹配块:
location @rewrite-php { rewrite ^/(.*)$ /$1.php last; }
3. 验证配置并生效
原有处理php请求的location ~ \.php$块无需调整,所有配置修改完成后执行以下操作:
- 执行
nginx -t测试配置语法是否正确,确认返回成功提示后再进行下一步 - 执行
systemctl reload nginx重载Nginx配置,规则即可生效
注意:规则生效后,访问不带后缀的路径时需要对应根目录下存在同名.php文件,比如访问
/test会自动匹配/var/www/public/test.php文件。
内容的提问来源于stack exchange,提问作者Elyas Behroozizade
相关产品推荐
相关产品推荐

