将子域/子文件夹重定向到根域/子文件夹 - 但仅限于某些实例

时间:2018-01-04 17:24:25

标签: .htaccess redirect mod-rewrite subdomain

当我设置子域名时,我错误地创建了一些链接。现在Google认为我的子域和根域都有一些页面。我需要解决这个问题,但我无法重定向整个子域名。

我想做的例子:

https://sub.example.com/ (no redirect)
https://sub.example.com/keep-1 (no redirect)
https://sub.example.com/keep-2 (no redirect)

https://sub.example.com/move-1/* => https://example.com/move-1/*
https://sub.example.com/move-2/* => https://example.com/move-2/*

我已经尝试了很多.htaccess解决方案而我已经关闭,但我无法弄明白。以下是我尝试过的内容:

尝试#1 - 正确重定向,但不能作为解决方案工作,因为它重定向来自子域的所有内容

RewriteCond %{HTTP_HOST} ^sub\.example\.com [NC]
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301,NE]

尝试#2 - 没有重定向任何东西 - 看起来像是正确的解决方案,但我错过了有关重定向如何工作的内容,我认为......

RewriteCond %{HTTP_HOST} ^sub\.example\.com/move-1/ [NC]
RewriteRule ^(.*)$ https://example.com/move-1/$1 [L,R=301,NE]

尝试#3 - 不会重定向任何内容

RewriteCond %{HTTP_HOST} ^sub\.example\.com/move-1/(.*)$ [NC]
RewriteRule https://example.com/move-1/$1 [L,R=301,NE]

尝试#4 - 不会重定向任何内容

RewriteBase /
RewriteRule ^sub\.example\.com/move-1/(.*)$ https://example.com/move-1/$1 [R=301]

我的.htaccess文件位于根域的root html文件夹中,似乎可以控制。我也从子域的根文件夹中尝试了这些,但是没有重定向任何内容。

1 个答案:

答案 0 :(得分:1)

RewriteCond %{HTTP_HOST} ^sub\.example\.com$
RewriteRule ^move(.*) https://example.com/move$1 [R=301,L]

%{HTTP_HOST}是主机名,映射到sub.example.comexample.com等域。它不包含域之后的任何path部分。 $1是反向引用,映射到正则表达式部分(.*)RewriteRule告知请求uri模式是否以/move开头,然后永久重定向到https://example.com/move$1