NGINX末尾带斜杠URL返回404求助:如何实现双URL正常访问
解决NGINX中带末尾斜杠的RSS URL返回404的问题
嘿,这个问题我之前配置RSS服务时也碰到过!本质是NGINX会把带末尾斜杠和不带斜杠的URL视作完全不同的请求——当你的目标是一个文件(比如newsfeed.rss)而非目录时,带斜杠的请求会被NGINX当成要访问一个叫newsfeed.rss的目录,自然就返回404了。这里有两个实用的配置方案,你可以按需选择:
方案1:301永久重定向(推荐,对SEO友好)
在你的NGINX server配置块里添加这条rewrite规则,把带末尾斜杠的请求重定向到不带斜杠的版本:
rewrite ^(/newsfeed\.rss)/$ $1 permanent;
这样用户访问https://www.mywebsite.com/newsfeed.rss/时,浏览器会自动跳转到不带斜杠的URL,同时搜索引擎也会更新索引,避免重复内容的问题。
方案2:内部匹配返回内容(无跳转)
如果你不想让用户看到跳转,希望两个URL都直接返回相同内容,可以用location规则配合try_files:
# 针对单个RSS文件的配置 location = /newsfeed.rss/ { try_files $uri /newsfeed.rss; } # 或者通用版,匹配所有以.rss/结尾的URL location ~* ^(.+\.rss)/$ { try_files $uri $1; }
这个规则会让NGINX在接收到带斜杠的RSS请求时,自动尝试访问不带斜杠的对应文件,从而返回正确内容。
最后一步
修改完配置后,别忘了重新加载NGINX让配置生效:
sudo nginx -s reload
内容的提问来源于stack exchange,提问作者Rocky Sena
相关产品推荐
相关产品推荐

