Apache-2.4

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

  • June 23, 2020

我有一個舊的數據伺服器(data.example.com),它被 NAS 取代,NAS 共享現在安裝在網路伺服器(www.example.com)上。

所以現在舊伺服器已被刪除,我在我們的 DNS 上創建了一個“CNAME”以指向我們的網路伺服器,並且由於我們的路徑在舊數據伺服器和網路伺服器上是相同的,因此頁面被正確連結,即。“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 webmaster@example.com

 # 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 。**

<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

您需要重新啟動網路伺服器才能使更改生效。

引用自:https://serverfault.com/questions/1022582