如何在Nginx中移除URL的.php/.html后缀并添加末尾斜杠?
在Nginx中实现URL后缀移除并添加末尾斜杠的方案
要实现你需求的URL美化,我们可以通过Nginx的rewrite指令分两步完成:永久重定向旧URL到新格式,以及内部映射新URL到实际文件。以下是具体的配置方案,你可以把这些规则加到你的Nginx server块中:
完整配置示例
server { listen 80; server_name www.website.com; root /var/www/your-website-root; # 替换成你的网站根目录路径 # 1. 永久重定向带.html/.php的URL到带末尾斜杠的新URL rewrite ^/(.*)\.html$ /$1/ permanent; rewrite ^/(.*)\.php$ /$1/ permanent; # 2. 内部映射带末尾斜杠的URL到实际的.html/.php文件 rewrite ^/(.*)/$ /$1.html break; rewrite ^/(.*)/$ /$1.php break; # 其他常规配置(比如index、error页面等) index index.html index.php; location ~ \.php$ { # 这里保留你原有的PHP处理配置,比如fastcgi_pass等 fastcgi_pass unix:/run/php/php8.2-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
配置解释
永久重定向规则:
rewrite ^/(.*)\.html$ /$1/ permanent;:匹配所有以.html结尾的URL,捕获.html前的部分(比如faq),然后301永久重定向到/faq/。这种重定向对SEO友好,能告诉搜索引擎更新索引地址。- 同理,第二条规则处理
.php后缀的URL,将/where-to-buy.php重定向到/where-to-buy/。
内部映射规则:
rewrite ^/(.*)/$ /$1.html break;:当用户访问/faq/时,Nginx内部会把请求映射到faq.html文件,浏览器地址栏会保持/faq/不变,不会暴露实际的文件后缀。- 第二条规则处理PHP文件的映射,确保访问
/where-to-buy/时,实际加载的是where-to-buy.php文件。
注意事项
- 记得把
root指令中的路径替换成你实际的网站根目录。 - 如果你的PHP环境有特殊配置(比如不同的FPM端口或socket路径),保留原有的
location ~ \.php$块内容即可,不用修改这部分。 - 配置完成后,执行
sudo systemctl restart nginx重启Nginx服务,让新规则生效。
内容的提问来源于stack exchange,提问作者st789
相关产品推荐
相关产品推荐

