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

如何用.htaccess重写子域名路径,保留子域名与URL参数

.htaccess子域名路径重写解决方案

原配置的问题分析

你之前的配置存在两个核心问题:

  • 第一条RewriteCond %{REQUEST_URI} !^/rezept/是排除以/rezept/开头的请求,和你要匹配/rezept路径的需求完全相反
  • RewriteRule ^(.*)$ /recipe/detail/$1会把所有请求(除了排除的)都重写,范围太广,不符合只针对/rezept的需求

正确的重写配置

以下配置可以实现你要的效果:将http://dev.domain.com/rezept?recipe_id=2513&language=de重写为http://dev.domain.com/recipe/detail?recipe_id=2513&language=de,同时保留子域名和所有URL参数:

RewriteEngine On
RewriteBase /

# 仅对dev子域名生效(支持带www的情况)
RewriteCond %{HTTP_HOST} ^(www\.)?dev\.domain\.com$
# 匹配请求路径为/rezept(可选匹配末尾带/的情况)
RewriteCond %{REQUEST_URI} ^/rezept/?$
# 重写到目标路径,QSA参数自动保留原查询字符串
RewriteRule ^ /recipe/detail [QSA,L]

配置说明

  • RewriteCond %{HTTP_HOST} ^(www\.)?dev\.domain\.com$:限定规则只作用于dev.domain.com或www.dev.domain.com子域名
  • RewriteCond %{REQUEST_URI} ^/rezept/?$:精准匹配请求路径为/rezept或/rezept/的情况(?表示末尾的/可选)
  • RewriteRule ^ /recipe/detail [QSA,L]:QSA(Query String Append)参数会自动把原URL的查询参数(如recipe_id=2513&language=de)附加到目标路径后;L表示这是最后一条规则,执行后停止后续重写规则的匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 06:35:08