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

如何在Apache 2.4中去除URL中的双斜杠//?

解决URL多斜杠的重定向问题

我来帮你搞定这个URL多斜杠的问题!你遇到的情况其实挺常见的——Apache默认会内部把多斜杠当作单斜杠处理,但原始的请求URI还是会保留在$_SERVER变量里,而且不会主动触发重定向,所以得用Rewrite规则强制把带多斜杠的URL跳转到干净的单斜杠版本。

核心Rewrite规则(放在根目录的.htaccess里)

先确保你的Apache已经开启了Rewrite模块(在httpd.conf里确认LoadModule rewrite_module modules/mod_rewrite.so没有被注释),并且当前目录允许.htaccess生效(设置AllowOverride All)。然后把下面的规则加到根目录的.htaccess文件中:

RewriteEngine On

# 处理域名后的多斜杠(比如 example.com////test.php → example.com/test.php)
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /+([^\ ]*)
RewriteRule ^ /%1 [R=301,L]

# 递归处理路径中的多斜杠(比如 example.com/path////to////test.php → example.com/path/to/test.php)
RewriteCond %{REQUEST_URI} ^(.*)//(.*)$
RewriteRule . %1/%2 [R=301,L]

规则解释

  • 第一个规则:用%{THE_REQUEST}变量是关键!这个变量存储的是用户发送的原始请求行(比如GET ////test.php HTTP/1.1),不会被Apache内部修改,所以能准确捕捉到用户输入的多斜杠。规则会把多斜杠开头的路径替换成单斜杠开头,然后返回301永久重定向。

  • 第二个规则:专门处理路径中间的多斜杠(比如目录之间的////),它会递归地把所有连续的斜杠替换成单个斜杠,直到URL里没有多余的斜杠为止。

为什么之前的尝试可能没生效?

很多人会用%{REQUEST_URI}来匹配多斜杠,但Apache在内部处理请求时,已经把%{REQUEST_URI}里的多斜杠转换成单斜杠了,所以根本匹配不到原始的多斜杠请求。而%{THE_REQUEST}是原始的请求数据,不会被修改,所以能精准触发重定向。

测试验证

设置好规则后,访问example.com////test.php或者example.com/path////to/test.php,浏览器应该会自动跳转到对应的单斜杠URL,此时你再输出$_SERVER['REQUEST_URI'],就能看到干净的路径了,不会有多余的斜杠。

小贴士:测试阶段可以先用R=302临时重定向,确认规则生效后再改成R=301永久重定向(对SEO更友好)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:48:30