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

WordPress下.htaccess RewriteRule规则失效,请求协助排查

问题排查与修复方案

以下是导致你的RewriteRule不生效的关键问题及修复步骤:

1. 正则匹配模式错误

在.htaccess中,RewriteRule匹配的URI不包含开头的斜杠,你原规则中的^\/programme$永远无法匹配/programme请求。需修正为同时匹配有无末尾斜杠的模式:

RewriteRule ^programme/?$ /wordpress/programme/ [L]
  • ^programme/?$:兼容/programme和/programme/两种访问路径
  • [L]标记:执行完该规则后停止后续规则处理,避免被WordPress的默认规则覆盖

2. 规则顺序错误

你的HTTP转HTTPS规则带有[L]标记,会终止后续规则执行。原顺序会导致HTTP访问/programme时,先触发内部重写再跳转到HTTPS,最终URL暴露真实路径/wordpress/programme/。正确顺序应为先执行HTTPS重定向,再执行内部重写,确保用户地址栏始终显示/programme。

修正后的完整.htaccess配置

RewriteEngine On

## http -> https 重定向(放在最前面)
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE,QSA]

# 内部重写:访问/programme时加载/wordpress/programme/内容
RewriteRule ^programme/?$ /wordpress/programme/ [L]

# BEGIN WordPress
# The directives (lines) between "BEGIN WordPress" and "END WordPress" are
# dynamically generated, and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /wordpress/

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]
</IfModule>

# END WordPress

额外注意事项

  • 测试时请清除浏览器缓存或继续使用隐私浏览模式
  • 若/wordpress/programme/是WordPress虚拟页面而非物理目录,上述规则依然有效,WordPress默认规则会接管后续请求处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 10:55:24