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

非WWW转WWW的Mod Rewrite规则被后续规则异常匹配问题

问题解决:非WWW转WWW规则被后续规则错误捕获

你的问题核心在于第一条非WWW转WWW的Rewrite规则缺少L标志,导致重定向操作执行后,Apache没有终止当前规则集的处理,而是继续匹配后续规则,最终触发了最后一条pages.php的重写规则,才出现了错误的跳转结果。

修正后的完整规则

# Redirect non-www to www + enforce HTTPS
RewriteCond %{HTTP_HOST} !^www.site-name.com$ [NC]
RewriteRule ^(.*)$ https://www.site-name.com/$1 [R=301,L]

# Enforce HTTPS for www requests
RewriteCond %{HTTPS} =off
RewriteRule ^(.*)$ https://www.site-name.com/$1 [R=301,L]

# Sections
RewriteRule ^sections/([^/]+)/$ /section.php?slug=$1 [NC,L]

# Content managed pages 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !\.php$
RewriteRule ^(.*)$ /pages.php?slug=$1 [L]

关键修正点说明

  1. 给第一条规则添加L标志:[R=301,L]中的L代表"Last",执行这条重定向后会立即终止当前规则集的处理,浏览器会发起新的https://www.site-name.com/...请求,此时新请求重新走规则集时,后续的Sections和pages规则就能正确匹配WWW地址的请求,不会出现错误嵌套。
  2. 给Sections规则添加L标志:避免匹配Sections规则后继续触发pages规则。
  3. 统一路径开头的斜杠:重写目标前加上/(比如/section.php),确保路径解析正确,避免相对路径导致的错误。

现在访问https://site-name.com/sections/something/时,会先触发第一条规则重定向到https://www.site-name.com/sections/something/,浏览器发起新请求后,Sections规则会匹配并正确重写到/section.php?slug=something,不会再触发最后一条pages规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 07:17:47