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

.htaccess URL重写失效:短链接跳转至首页而非目标页面

.htaccess URL重写错误分析与修复

核心错误点

  • 错误1:误用%{HTTP_POST}变量
    第一条规则里的RewriteCond %{HTTP_POST} !www\.mysite\.it$完全错误,%{HTTP_POST}用于识别POST请求方法,而你需要匹配的是请求的主机名,正确变量应为%{HTTP_HOST}。这个错误会导致所有请求被强制跳转到www域名,后续的短链接重写规则根本无法执行。

  • 错误2:正则结尾的多余转义
    短链接规则RewriteRule ^I-([0-9]+)\$ join.php?invitation=$1 [NC]中的\$是无效转义,正则里$本身就表示字符串结尾,转义后会变成匹配字面的$符号,导致规则永远无法匹配I-123456这类路径。

  • 冗余的引擎声明
    RewriteEngine On只需在文件开头声明一次,重复声明无意义且增加代码冗余。


修正后的完整.htaccess代码

RewriteEngine On

# 非www域名跳转到www(修复主机名匹配错误)
RewriteCond %{HTTP_HOST} !^www\.mysite\.it$
RewriteRule (.*) http://www.mysite.it/$1 [R=301,L]

# 短链接重写规则(修复正则结尾转义错误)
RewriteRule ^I-([0-9]+)$ join.php?invitation=$1 [NC,L]

# 防盗链规则(补充正则结束符,避免误匹配无关域名)
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mysite\.it(/.*)?$ [NC]
RewriteRule \.(jpg|jpeg|png|gif|bmp|php|css)$ - [NC,F,L]

Options -Indexes

修正说明

  1. 替换%{HTTP_POST}为%{HTTP_HOST},仅当请求主机不是www.mysite.it时才触发跳转,确保短链接请求能进入后续重写规则。
  2. 移除$前的转义符,让正则正确匹配I-开头的数字路径。
  3. 给短链接规则添加L标记,避免后续规则干扰,提升执行效率。
  4. 完善防盗链规则的正则,确保仅匹配mysite.it相关的来源域名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 14:36:03