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

如何实现域名访问时自动重定向至落地页?

解决根域名访问空白问题

问题根源

当直接访问根域名(如https://example.com)时,服务器会识别这是对网站根目录的请求,满足.htaccess中RewriteCond %{REQUEST_FILENAME} !-d的反向条件(即请求是目录),因此不会触发转发到router.php的规则。而你的根目录下没有服务器默认的索引文件(如index.php),所以页面加载空白。

当访问https://example.com/index时,该请求既不是文件也不是目录,触发转发规则,router.php中的split_url()函数默认拿到index,加载index.php正常显示。

解决方案

方案1:修改.htaccess,单独处理根域名请求

在现有规则前添加一条针对根路径的重写规则,强制将根域名请求转发到router.php并传入url=index:

RewriteEngine On 
# 处理根域名请求
RewriteRule ^$ router.php?url=index [L,QSA]
# 原有规则
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ router.php?url=$1 [L,QSA]

方案2:调整服务器默认文档(推荐)

将router.php设置为服务器的默认索引文件,这样访问根域名时,服务器会直接加载router.php,此时split_url()函数会因为$_GET['url']不存在而使用默认值index,自动加载index.php。

  • Apache环境,在.htaccess中添加:
    DirectoryIndex router.php index.php
    
  • Nginx环境,在站点配置的location /块中修改:
    index router.php index.php;
    

方案3:优化router.php触发逻辑(可选)

你的现有代码已经处理了$_GET['url']不存在的情况(默认返回index),但需要确保服务器能在根域名访问时加载router.php,配合方案2使用效果最佳。

验证

修改后重启服务器(或让.htaccess规则生效),直接访问根域名,应该会自动加载index.php的内容,和访问/index效果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 06:42:20