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

.htaccess配置问题:URL空路径错误跳转至404页面

修复.htaccess实现仅允许访问主域名的配置方案

问题现状

当前配置访问主域名时会错误跳转到404.php?cp=index.php,且无法禁止直接访问index.php或其他后缀路径,需要调整规则逻辑实现以下需求:

  • 强制所有请求走HTTPS
  • 任何非根路径(如domain.com/index.php、domain.com/xxx)都301重定向到domain.com/
  • 根路径内部静默重定向到index.php,禁止用户直接访问该文件

修复后的.htaccess配置

RewriteBase /
RewriteEngine On

Options -Indexes

# 强制HTTPS跳转
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# 禁止直接访问index.php,重定向到根域名
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ / [L,R=301]

# 任何非根路径都重定向到根域名
RewriteRule ^.+$ / [L,R=301]

# 根路径内部重定向到index.php
RewriteRule ^$ index.php [L]

规则说明

  • 强制HTTPS:把所有HTTP请求301重定向到HTTPS版本,后续规则会统一处理路径问题
  • 禁止直接访问index.php:匹配用户手动输入domain.com/index.php这类请求,直接重定向到根域名
  • 非根路径重定向:匹配任何非空的路径(单文件名、多级路径都包含),全部301重定向到根域名
  • 根路径内部跳转:当请求是domain.com/时,内部静默转发到index.php,用户地址栏不会显示该文件名

原配置问题原因

原配置中,根路径规则RewriteRule ^$ index.php [L]的[L]标记仅终止当前循环,但内部重定向后请求会再次进入规则链,此时路径变为index.php,触发了下方的RewriteRule ^([^/]+)$ 404.php?cp=$1规则,导致错误跳转。调整规则顺序后,先处理所有外部重定向需求,最后执行内部跳转,彻底避免循环冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 07:23:13