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

如何配置Apache重写规则实现指定URL精准跳转并排除非匹配路径

Apache 精准定向跳转实现方案

前置要求:旧域名站点已启用 mod_rewrite 模块,规则可配置在旧域名的虚拟主机配置段,或站点根目录的 .htaccess 文件中(使用 .htaccess 需确保根目录配置 AllowOverride All)。

核心规则

RewriteEngine On

# 仅精准匹配根路径下的 /url 请求(无尾斜杠、无后缀、无子路径)
RewriteRule ^url$ https://newdomain.com/url [R=301,L]

注意:规则匹配的路径前缀差异(避免配置踩坑):

  • 配置在站点根目录 .htaccess 中:无需前导斜杠,用上述 ^url$ 即可
  • 配置在 <VirtualHost> 虚拟主机配置段中:需加前导斜杠,修改为 ^/url$ 才能匹配完整请求路径

规则匹配逻辑说明

  • ^ 为路径开头锚定:确保请求无前置路径段,不会匹配 /xxx/url 这类路径
  • $ 为路径结尾锚定:确保请求 url 后无任何字符,直接排除所有不符合要求的相似路径:
    • /url.html:url 后接 .html,不匹配结尾锚定
    • /url/doc.css、/url/er/:url 后接 / 子路径,不匹配结尾锚定
    • /url/(带尾斜杠)、/url123:url 后接任意字符,不匹配规则
  • 默认不匹配查询字符串:RewriteRule 仅解析请求路径部分,/url?a=1 这类带参数的同路径请求也会触发跳转

可选补充调整

1. 禁止带查询参数的同路径跳转

若需严格匹配无任何查询参数的原地址(仅 https://oldodomain.com/url 本身,带参数的同路径不跳转),可追加条件:

# 跳过带查询字符串的请求
RewriteCond %{QUERY_STRING} !^$
RewriteRule ^url$ - [L]

2. 规避目录自动跳转干扰

若旧服务器上存在名为 url 的目录,Apache 默认开启 DirectorySlash On 时,请求 /url 会被自动改写为 /url/,导致规则不触发。可在规则前追加配置关闭该行为:

DirectorySlash Off

3. 重定向类型调整

[R=301] 为永久重定向,若需临时跳转可修改为 [R=302];[L] 表示匹配到规则后停止后续重写逻辑。


内容的提问来源于stack exchange,提问作者Luca Hoplix Pod

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 13:15:08