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

如何编写.htaccess重写规则实现ex.com跳转function.php并拆分URL参数

配置问题修正说明

你写的配置存在多处错误,无法实现需求,错误点如下:

  • 规则逻辑顺序错误,且原main.com的路由规则未绑定域名条件,ex.com的请求会优先被匹配到index.php的路由,根本走不到后面的ex.com专属规则
  • ex.com的路径匹配未限制数字长度为1-8位,不符合需求
  • 参数拼接语法错误,$1和num之间少了&分隔符,会导致参数解析错误
  • [QSA, L]标记中间存在空格,属于语法错误,Apache无法识别
  • 缺少根域名直接访问跳转至function.php的规则
  • 重复声明RewriteEngine On无意义,全局只需要声明一次即可
正确配置代码
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

# ------------ main.com 专属规则 ------------
# 给main.com设置HTTP_AUTHORIZATION环境变量
RewriteCond %{HTTP_HOST} ^(www\.)?main\.com$
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

RewriteCond %{HTTP_HOST} ^(www\.)?main\.com$
RewriteRule ^index\.php$ - [L]

RewriteCond %{HTTP_HOST} ^(www\.)?main\.com$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# ------------ ex.com 专属规则 ------------
# 规则1:直接访问根域名跳转至function.php
RewriteCond %{HTTP_HOST} ^(www\.)?ex\.com$
RewriteRule ^$ /function.php [L]

# 规则2:匹配/3位字符+1-8位数字的路径,拆分参数
RewriteCond %{HTTP_HOST} ^(www\.)?ex\.com$
# {3}匹配3位任意大小写字母数字,[0-9]{1,8}匹配1到8位数字
RewriteRule ^/?([0-9A-Za-z]{3})([0-9]{1,8})$ /function.php?tt=$1&num=$2 [QSA,L]
</IfModule>
规则说明
  • 所有规则都绑定了对应的域名条件,两个域名的路由完全隔离不会互相干扰
  • QSA标记会自动将原URL自带的查询参数追加到目标地址后,无需手动处理,满足参数原样保留的需求
  • 路径匹配规则严格限制了数字长度为1-8位,符合需求
  • 根路径访问规则单独处理,满足直接访问ex.com跳转至function.php的要求
  • 所有[L]标记保证匹配到对应规则后停止向下匹配,避免冲突

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 03:15:11