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

通过htaccess(mod_rewrite)重定向带双斜杠的错误URL至410页面的问题

解决以abc//开头的错误URL返回410状态码的问题

问题原因

Apache默认会通过mod_dir模块自动规范化URL,将多个连续斜杠合并为单个斜杠。这意味着当请求到达RewriteRule规则时,/abc//xxx/yyy已经被处理成/abc/xxx/yyy,所以你之前写的带双斜杠的匹配规则根本找不到对应的请求。

正确解决方案

利用%{THE_REQUEST}变量匹配原始请求——这个变量保存的是浏览器发送的原始请求行(比如GET /abc//xxx/yyy HTTP/1.1),不会被Apache规范化,能准确捕捉到带双斜杠的错误URL。

方案1:直接返回410状态码(推荐)

不需要跳转至PHP页面,直接让服务器返回410状态,更符合HTTP规范:

# 匹配所有以/abc//开头的请求,返回410 Gone状态码
RewriteCond %{THE_REQUEST} \s/abc//[^\s]+
RewriteRule ^abc/ - [R=410,L]

方案2:跳转到自定义410页面

如果需要展示自定义的410页面内容,使用以下规则:

# 匹配所有以/abc//开头的请求,跳转到自定义410页面
RewriteCond %{THE_REQUEST} \s/abc//[^\s]+
RewriteRule ^abc/ 410_page_deleted.php [END,NC]

规则说明

  • %{THE_REQUEST} \s/abc//[^\s]+:匹配原始请求中包含/abc//的部分,确保只针对错误URL生效
  • RewriteRule ^abc/:匹配规范化后的路径(此时双斜杠已合并为单斜杠),触发后续操作
  • [R=410,L]:返回410状态码并终止规则处理;[END,NC]:跳转到指定页面,忽略大小写且终止后续规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 08:08:12