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

如何阻止.htaccess在403错误页面URL后附加lng参数?

解决403错误时URL附加多余lng参数的问题

问题根源在于第三重写规则未排除真实存在的文件和目录。当访问example.local/imgs(不带斜杠)这类真实目录时,Apache本应直接返回403,但你的规则先匹配了该路径,将imgs当作语言参数传递给index.php,最终导致错误页面URL带上多余的?lng=imgs。

只需在第三重写规则前添加两个条件,排除真实存在的文件和目录即可解决:

Options -Indexes

RewriteEngine On
RewriteBase /

RewriteRule     ^send-email$        send-msg-ajax.php [NC]
RewriteRule     ^cv$                docs/cv.pdf [NC]

# 添加条件:排除真实存在的文件和目录
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule     ^([a-zA-z_-]+)$     index.php?lng=$1 [QSA,L]

#custom error pages
ErrorDocument 403 /error.php
ErrorDocument 404 /error.php

规则说明

  • RewriteCond %{REQUEST_FILENAME} !-f:仅当请求路径不是真实存在的文件时,才执行后续重写规则
  • RewriteCond %{REQUEST_FILENAME} !-d:仅当请求路径不是真实存在的目录时,才执行后续重写规则

修改后,访问真实存在的目录(如imgs)时,不会触发语言参数的重写规则,Apache会直接返回403错误页面,URL也不会附加多余的lng参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 21:52:31