You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在.htaccess中移除.php/.png扩展名后的尾随斜杠?

解决.htaccess添加尾随斜杠后出现.php/和.png/的问题

我来帮你搞定这个问题——你遇到的.php/和.png/后缀带斜杠的情况,是因为初始的加尾斜杠规则没排除这类特定扩展名的资源,哪怕它们是文件(或者文件不存在时)都会被加上斜杠。我们可以从源头避免和修正错误路径两个方向解决,顺便给你调整好现有规则的顺序,避免冲突:

一、先从源头禁止给特定扩展名加尾斜杠

修改你原来的加尾斜杠规则,新增一个条件排除.php和.png结尾的请求,这样就不会生成错误的带斜杠路径了:

# 仅给非文件、且不以.php/.png结尾的路径添加尾随斜杠
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\.(php|png)$ [NC]
RewriteRule ^(.*[^/])$ /$1/ [L,R=301]

这里的RewriteCond %{REQUEST_URI} !\.(php|png)$ [NC]意思是:如果请求的URI不是以.php或.png结尾([NC]表示不区分大小写),才执行加尾斜杠的操作。

二、添加规则修正已存在的错误路径

如果已经有.php/或.png/这类错误链接被搜索引擎收录,或者用户不小心访问到了,我们需要用301重定向把它们转成正确的无斜杠路径:

# 移除.php/和.png/末尾的多余斜杠
RewriteRule ^(.*)\.(php|png)/$ /$1.$2 [L,R=301,NC]

这个规则会匹配所有以.php/或.png/结尾的请求,自动去掉末尾的斜杠,比如/image.png/会被重定向到/image.png,/page.php/会被重定向到/page.php。

三、整合到你现有规则的完整配置

规则顺序非常关键:修正错误路径的规则要放在最前面,然后是加尾斜杠的规则,最后再放你原本的其他规则,这样能避免循环重定向或者规则冲突。调整后的完整.htaccess如下:

RewriteEngine On
RewriteBase /

# 1. 优先修正已存在的.php/和.png/错误路径
RewriteRule ^(.*)\.(php|png)/$ /$1.$2 [L,R=301,NC]

# 2. 给符合条件的路径添加尾随斜杠
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\.(php|png)$ [NC]
RewriteRule ^(.*[^/])$ /$1/ [L,R=301]

# 3. 你的原有规则(保持原有顺序即可)
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^xxx.net [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

AddDefaultCharset utf-8

order allow,deny
allow from all
deny from 123.249.24.233

RewriteCond %{HTTP_HOST} ^example.com [NC,OR]
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301,NC]

RewriteCond %{QUERY_STRING} ^$
RewriteCond %{THE_REQUEST} /index\.php
RewriteRule ^index\.php https://www.%{HTTP_HOST}/ [R=301,L]

RewriteRule ^Index\.php$ /index.php [R=301,L]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(html?|php)\ HTTP/
RewriteRule ^index\.(html?|php)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteRule ^index\$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

额外提醒

  • 测试前记得清空浏览器缓存,因为301重定向会被浏览器永久缓存,旧的重定向规则可能会影响测试结果。
  • 如果之后还遇到其他扩展名的类似问题,只要在两个规则的括号里添加对应的扩展名即可,比如要排除.jpg,就改成(php|png|jpg)。

内容的提问来源于stack exchange,提问作者Franky2207

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 21:57:26