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

.htaccess配置问题:旧域名全页面重定向至新域名对应页面失败

问题描述

我配置.htaccess时遇到了问题,期望实现的重定向效果:

  • old.site 重定向至 new.site
  • old.site/a/ 重定向至 new.site/a/
  • old.site/b/ 重定向至 new.site/b/
  • 以此类推...

但实际结果是:

  • old.site 重定向至 new.site
  • old.site/a/ 重定向至 new.site
  • old.site/b/ 重定向至 new.site
  • 以此类推...

补充说明:两个域名指向不同的服务器。

以下是我当前的完整.htaccess代码:

# # av:php5-engine
AddHandler av-php8 .php

# # av:Toolbar
SetEnv AV_TOOLBAR 0

# av:AntiHotlink
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} \.(gif|jpe?g|png)$ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://([a-z0-9\-\.]*)distopia\.altervista\.org
RewriteCond %{REQUEST_URI} !^\/_altervista_ht\/
RewriteCond %{HTTP_REFERER} !^http://([a-z0-9\-\.]+)google\.
RewriteRule .*$ http://hl.altervista.org/split.php?http://%{HTTP_HOST}%{REQUEST_URI} [R,L]
# AntiHotlink

# av:PHP-upload
php_value upload_max_filesize 20M
php_value post_max_size 20M
php_value max_input_time 300
# PHP-upload

RewriteEngine On
RewriteRule ^(.*)$ https://distopia-eva.org/$1 [R=301]
解决方案

问题出在最后的重定向规则缺少域名限定,优化后即可保留路径重定向。具体修改如下:

  1. 删掉重复的RewriteEngine On(前面的AntiHotlink部分已经开启过);
  2. 给重定向规则添加域名判断,确保仅针对旧域名生效,同时保留路径传递。

修改后的重定向代码段:

# 旧域名重定向到新域名,保留完整路径
RewriteCond %{HTTP_HOST} ^distopia\.altervista\.org$ [NC]
RewriteRule ^(.*)$ https://distopia-eva.org/$1 [R=301,L]

完整的.htaccess代码:

# # av:php5-engine
AddHandler av-php8 .php

# # av:Toolbar
SetEnv AV_TOOLBAR 0

# av:AntiHotlink
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} \.(gif|jpe?g|png)$ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://([a-z0-9\-\.]*)distopia\.altervista\.org
RewriteCond %{REQUEST_URI} !^\/_altervista_ht\/
RewriteCond %{HTTP_REFERER} !^http://([a-z0-9\-\.]+)google\.
RewriteRule .*$ http://hl.altervista.org/split.php?http://%{HTTP_HOST}%{REQUEST_URI} [R,L]
# AntiHotlink

# av:PHP-upload
php_value upload_max_filesize 20M
php_value post_max_size 20M
php_value max_input_time 300
# PHP-upload

# 旧域名重定向到新域名,保留完整路径
RewriteCond %{HTTP_HOST} ^distopia\.altervista\.org$ [NC]
RewriteRule ^(.*)$ https://distopia-eva.org/$1 [R=301,L]

关键说明:

  • RewriteCond限定仅旧域名的请求触发重定向,避免不必要的规则执行;
  • $1会捕获原始请求的完整路径(包括/a/、/b/等),确保重定向到新域名的对应路径;
  • [L]标记表示处理完该规则后停止后续规则解析,符合规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 04:15:34