如何将 sub.domain.com 重定向到 www.domain.com/dir/page.html?

如何将 sub.domain.com 重定向到 www.domain.com/dir/page.html?

我有一个旧的数据服务器(data.example.com) 已被 NAS 取代,NAS 共享现已安装在 Web 服务器上 (www.example.com)。

因此现在旧服务器已被删除,我已经在我们的 DNS 上创建了一个“CNAME”来指向我们的网络服务器并且由于我们的路径在旧数据服务器和 Web 服务器上是相同的,因此页面链接正确,即“data.example.com/datafolder1”重定向到“www.example.com/datafolder1”,这是应该的。

但是我怎样才能让 data.example.com 重定向到www.example.com/dir/page.html其中有关于旧服务器已被删除的信息以及指向实际数据文件夹的链接?

以下是有问题的配置:

Bind9:example.hosts

data.example.com.         IN      CNAME   www.example.com.

阿帕奇:www.example.com.conf

<VirtualHost *:80>
  ServerName data.example.com
  
  # 301 --- data.example.com => www.example.com/Info/dataserver.html
  RewriteRule ^data\.example\.com$ /www.example.com/Info/dataserver.html? [L,R=301]

  LogLevel warn rewrite:trace3
  ErrorLog  /var/log/apache2/error-data.example.com.log
  CustomLog /var/log/apache2/access-data.example.com.log combined
</VirtualHost>

<VirtualHost serverip:80>
  ServerName www.example.com
  ServerAlias example.com
  ServerAdmin [email protected]

  # Redirecting all http > https
  Redirect permanent / https://www.example.com/

  LogLevel error rewrite:trace3
  ErrorLog  /var/log/apache2/error-example.com.log
  CustomLog /var/log/apache2/access-example.com.log combined
</VirtualHost>

<VirtualHost *:443>
  ServerName www.example.com
  ServerAlias example.com
  DocumentRoot /var/www/www.example.com/htdocs/

  SSLEngine on
  etc........

使用当前配置,data.example.com 将重定向到www.example.com主页不是www.example.com/dir/page.html就像我希望的那样。

答案1

<VirtualHost *:80>
  ServerName data.example.com
  
  # 301 --- data.example.com => www.example.com/Info/dataserver.html
  RewriteRule ^data\.example\.com$ /www.example.com/Info/dataserver.html? [L,R=301]

大概是这个重定向是您“尝试”重定向http://data.example.com/http://www.example.com/dir/page.html- 根据您的问题文本(尽管这应该是https://)。

此重定向实际上所做的是重定向http://data.example.com/data.example.comhttp://data.example.com/www.example.com/Info/dataserver.html- 可能不是您的意图。

要重定向http://data.example.com/(仅文档根目录)到https://www.example.com/dir/page.html您应该将以上内容更改RewriteRule为以下内容(这里不需要 mod_rewrite):

RedirectMatch 301 ^/$ https://www.example.com/dir/page.html

要重定向http://data.example.com/<anything>,请将以上内容更改为:

RedirectMatch 301 ^ https://www.example.com/dir/page.html

您需要重新启动网络服务器才能使更改生效。

相关内容