使用 htaccess 将 301 从子域重定向到子文件夹/具有不同的 URL

问题描述 投票:0回答:1

我有一个带有以下地址(子域)的网站:

subd.example.com
并且希望将其重定向到(子文件夹):
https://www.example.com/subf/

如果我网站中的网址不会改变,我搜索下面的代码是否有效:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^subd\.example\.com [NC]
RewriteRule ^(.*)$ https://example.com/subf/$1/ [R=301]

但我的部分或大部分网址将被更改,例如从 /oldlink1 更改为 /newlink1 以及...

不知怎的,我被卡住了,代码无法工作,只有主页重定向正确,我尝试过:

Redirect 301 /oldlink1 www.example.com/subf/newlink1

但它不起作用,给我返回这个链接:

www.example.com/subf/oldlink

请问有什么帮助吗?

编辑: 如果子域名和子文件夹名称相同很重要, 我的意思是 subdsubf 都是

sub
。 地址是:

sub.example.com
www.example.com/sub/
.htaccess http-redirect cpanel
1个回答
1
投票

您的问题很可能是这些特定重定向规则的位置。这很重要,您需要考虑规则集是从上到下处理的。因此,您需要首先实现特定的异常,因此在文件中更靠前,然后再实现更一般的规则,因此在文件中更靠下。

这可能就是您正在寻找的:

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^subd\.example\.com$
RewriteRule ^/?$ https://example.com/subf [R=301,L]

RewriteCond %{HTTP_HOST} ^subd\.example\.com$
RewriteRule ^/?oldlink1/?$ https://example.com/subf/newlink1 [R=301,L]

RewriteCond %{HTTP_HOST} ^subd\.example\.com$
RewriteRule ^/?oldlink2/?$ https://example.com/subf/newlink2 [R=301,L]

RewriteCond %{HTTP_HOST} ^subd\.example\.com$
RewriteRule ^/?oldlink3/?$ https://example.com/subf/newlink3 [R=301,L]

RewriteCond %{HTTP_HOST} ^subd\.example\.com$
RewriteRule ^/?(.*)/?$ https://example.com/subf/$1 [R=301,L]
© www.soinside.com 2019 - 2024. All rights reserved.