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

非www域名访问URL带index.php的.htaccess配置问题求助

解决URL重定向后带/index.php的问题

嘿,我太懂你折腾各种配置都没解决的闹心劲儿了——这种看似简单的问题卡壳确实让人头大!咱们来一步步揪出问题根源,然后彻底搞定它。

问题出在哪:规则顺序搞反了

你的.htaccess里规则的执行顺序是核心问题:你先把所有非文件/目录的请求重写到/index.php,然后才做域名跳转(example.fr→www.example.fr)和HTTPS强制跳转。这就导致当你访问example.fr时,服务器先把空请求转成了/index.php,再带着这个路径去做后续的重定向,最终就变成了https://www.example.fr/index.php。

修正后的.htaccess配置

把规则顺序调过来,先搞定协议(HTTPS)和域名(统一到www),最后再处理前端路由的index.php重写。试试下面的配置:

<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteBase /web/

# 1. 强制所有请求使用HTTPS,优先保证协议正确
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# 2. 把非www的example.fr跳转到HTTPS的www版本,统一域名
RewriteCond %{HTTP_HOST} ^example\.fr$ [NC]
RewriteRule ^(.*)$ https://www.example.fr/$1 [L,R=301]

# 3. 最后处理前端控制器:仅当请求不是文件/目录时,内部重写到index.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [L,QSA]
</IfModule>

关键修改说明

  • 规则顺序优先级:先处理协议和域名的重定向,确保这些跳转完成后,再处理内部的路由重写,这样就不会把index.php带入到最终的URL里。
  • HTTPS跳转前置:放在最前面,确保所有请求先强制转到HTTPS,避免后续跳转出现协议混乱。
  • 域名跳转一步到位:直接匹配example.fr跳转到HTTPS的www版本,不需要分两次跳转。
  • 路由重写路径修正:把原来的/index.php改成index.php,因为你设置了RewriteBase /web/,这样路径会更准确,避免跳出指定目录。

额外提醒

别忘了清除浏览器缓存!因为301是永久重定向,浏览器会缓存旧的跳转规则,修改后可能需要强制刷新(Ctrl+F5)才能看到效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:11:00