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

.htaccess失效:访问子域名archive.example.com时自动跳转至主域名

解决子域名跳转回主域名子文件夹的问题

这种跳转问题我之前帮朋友排查过好几次,大概率是网站内部的URL配置、服务器重写规则或者硬编码URL在搞鬼,咱们一步步来解决:

1. 检查网站程序的基础URL配置

绝大多数CMS(比如WordPress、Drupal)或者自定义开发的网站,都会有一个「站点基础URL」的配置项。之前你的网站部署在http://www.example.com/archive,现在迁移到子域名后,这个配置可能没同步更新,导致程序自动生成跳转链接。

举个WordPress的例子,你可以直接修改wp-config.php文件,添加或更新以下配置:

define('WP_HOME', 'http://archive.example.com');
define('WP_SITEURL', 'http://archive.example.com');

如果是其他CMS或者自定义程序,找到对应的配置文件(比如config.php、settings.php),查找类似BASE_URL、SITE_URL的变量,把值改成http://archive.example.com。

2. 排查服务器重写规则(.htaccess/Nginx配置)

如果你的服务器用的是Apache,检查子域名根目录下的.htaccess文件,看看有没有强制跳转到主域名的规则。比如类似下面的代码就要删掉或者修改:

# 错误的跳转规则,要移除
RewriteRule ^(.*)$ http://www.example.com/archive/$1 [R=301,L]

如果是Nginx服务器,打开子域名对应的server配置块,检查是否存在rewrite指令把请求导向主域名。正确的子域名配置应该是直接指向archive文件夹,比如:

server {
    listen 80;
    server_name archive.example.com;
    root /path/to/your/archive/folder;
    index index.php index.html;

    # 其他必要的规则,比如PHP解析
    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

3. 批量替换页面内的硬编码URL

有些页面可能直接写死了主域名的URL(比如<a href="http://www.example.com/archive/some_page">),这种情况需要批量替换。你可以用服务器的命令行工具快速处理:

Linux系统下用sed命令(替换所有PHP文件里的旧URL):

sed -i 's/http:\/\/www.example.com\/archive/http:\/\/archive.example.com/g' /path/to/archive/files/*.php

如果有HTML、JS、CSS文件,把*.php换成对应的后缀即可,或者用*.*匹配所有文件(注意备份后再操作)。

4. 清除缓存

最后别忘了清除缓存,包括:

  • 浏览器端强制刷新(Ctrl+F5),避免缓存旧的跳转规则
  • 服务器端缓存(比如OPcache、Redis),可以重启PHP服务或者重置缓存
  • 如果用了CDN,登录CDN后台清除对应子域名的缓存

按照上面的步骤排查,基本就能解决跳转问题,让访问始终停留在archive.example.com域名上。

内容的提问来源于stack exchange,提问作者Miŋ Q Kim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:39:01