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

网站迁移URL重写规则求助:A站与B站URL结构不一致

解决方案:Website A 到 Website B 的 URL 重写规则

首先明确核心限制:.htaccess 的重写规则只能基于当前 URL 的字面内容做匹配,无法自动获取每个文章对应的分类信息(分类数据存储在 Website B 的数据库中),需根据实际场景选择方案:

场景1:所有文章归属同一个固定分类

如果 Website A 的全部文章在 Website B 中都属于同一个分类(比如 blog),可使用如下规则:

RewriteEngine On

# 处理不带 www 的 websiteA.de 跳转
RewriteCond %{HTTP_HOST} ^websiteA\.de$ [NC]
RewriteRule ^([^/]+)/?$ https://www.websiteB.de/固定分类名/$1/ [R=301,L]

# 处理带 www 的 websiteA.de 跳转
RewriteCond %{HTTP_HOST} ^www\.websiteA\.de$ [NC]
RewriteRule ^([^/]+)/?$ https://www.websiteB.de/固定分类名/$1/ [R=301,L]

将代码中的固定分类名替换为实际分类标识(如 news、articles),规则里的[^/]+匹配文章名部分,/?兼容 URL 末尾带或不带斜杠的情况。

场景2:文章分属不同分类,需手动映射

若不同文章对应不同分类,只能为每个文章单独编写重写规则:

RewriteEngine On

# 单独文章的跳转规则(需放在全局规则之前)
RewriteCond %{HTTP_HOST} ^(www\.)?websiteA\.de$ [NC]
RewriteRule ^article-name-1/?$ https://www.websiteB.de/category1/article-name-1/ [R=301,L]

RewriteCond %{HTTP_HOST} ^(www\.)?websiteA\.de$ [NC]
RewriteRule ^article-name-2/?$ https://www.websiteB.de/category2/article-name-2/ [R=301,L]

# 全局兜底规则(未匹配到单独规则的请求走默认分类)
RewriteCond %{HTTP_HOST} ^(www\.)?websiteA\.de$ [NC]
RewriteRule ^(.*)$ https://www.websiteB.de/默认分类/$1/ [R=301,L]

注意:单独文章的规则必须放在全局规则之前,保证优先匹配特定文章,未匹配的请求再走默认分类跳转。

额外注意事项

  • 测试阶段建议用 R=302 临时重定向,避免浏览器缓存永久重定向规则影响调试;正式迁移再改为 R=301。
  • 正则中域名的点需用 \. 转义,否则会匹配任意字符导致规则失效。
  • 若需映射的文章数量较多,手动编写规则效率极低,建议在 Website B 的后端(如 WordPress 的 functions.php)编写路由逻辑,通过查询数据库获取文章对应分类后跳转,灵活性更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 01:32:20