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

.htaccess配置问题:HTTP与HTTPS请求的行为差异排查求助

问题分析与修复方案

原因解释

你的.htaccess规则顺序导致了HTTP和HTTPS访问的行为差异:

  • 当用HTTP访问根路径/时,先触发了内部重写规则(把/映射到src/public/index.php),之后才执行HTTP转HTTPS的重定向。此时%{REQUEST_URI}已经被替换成了内部重写后的/src/public/index.php,所以重定向后的URL就会带上这个真实路径。
  • 当用HTTPS访问时,不会触发HTTP转HTTPS的规则,直接执行内部重写,而内部重写是服务器端的隐式操作,浏览器地址栏会保持显示原始的/。

修复步骤

把HTTP转HTTPS的重定向规则移到所有重写规则的最顶部,确保先完成协议跳转,再处理内部路径映射。修改后的.htaccess内容如下:

RewriteEngine On
RewriteBase /

# 先处理HTTP -> HTTPS重定向
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# / -> src/public/index.php
RewriteRule ^$ src/public/index.php [L]

# /index.php -> src/public/index.php
RewriteRule ^index.php$ src/public/index.php [L]

RewriteRule ^([a-zA-Z0-9]+)$ index.php?campaign=$1 [L]
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)$ index.php?campaign=$1&id=$2 [L]

ErrorDocument 404 /src/public/404.php
ErrorDocument 403 /src/public/404.php

<FilesMatch config.ini|composer.json|config.php>
   Order deny,allow
   Deny from all
</FilesMatch>

额外说明

  • 301是永久重定向,浏览器会缓存规则,测试前建议清除浏览器缓存,或者先用R=302临时重定向验证效果,确认正常后再改回301。
  • 确保服务器已启用mod_rewrite模块,否则所有重写规则无法生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 01:04:56