Linux

CNAME 重定向對於兩個域的行為不同

  • December 30, 2012

我有兩個域 - Oliverhaslam.com 和 ojhaslam.co.uk。

兩者都在同一家公司註冊,並且都有指向我伺服器IP地址的A記錄。

兩者都有 CNAME 記錄,將 www 地址指向等效的非 www 地址(www.oliverhaslam.com 到 Oliverhaslam.com 等)

問題是這樣的:當 www.oliverhaslam.com 重定向到 Oliverhaslam.com 並在瀏覽器的地址欄中顯示時,www.ojhaslam.co.uk 指向正確的 IP,而不是 ojhaslam.co.uk。

www.ojhaslam.co.uk 的伺服器別名添加到我的虛擬主機可以使內容在瀏覽器中正確顯示,但地址欄沒有反映到 ojhaslam.co.uk 的重定向。正如我所說,這不是我在 Oliverhaslam.com 上看到的行為,我擔心 SEO 等會將 www.ojhaslam.co.uk 和 ojhaslam.co.uk 視為兩個獨立的網站。

這是我的 httpd.conf 文件:

   <VirtualHost *:80>
ServerName oliverhaslam.com
ServerAlias oliverhaslam.com
DocumentRoot /var/www/
</VirtualHost>


<VirtualHost *:80>
ServerName ojhaslam.co.uk
ServerAlias ojhaslam.co.uk
DocumentRoot /var/www/photo365/
</VirtualHost>

任何想法為什麼有兩個域,在註冊商處配置相同並在 httpd.conf 中配置相同的行為不同?

謝謝。

編輯:

我現在通過將上面的程式碼更改為:

<VirtualHost *:80>
ServerName oliverhaslam.com
ServerAlias oliverhaslam.com
DocumentRoot /var/www/
</VirtualHost>


<VirtualHost *:80>
ServerName ojhaslam.co.uk
ServerAlias ojhaslam.co.uk
#RedirectMatch permanent /(.*) http://ojhaslam.co.uk/$1
DocumentRoot /var/www/photo365/
</VirtualHost>

<VirtualHost *:80>
ServerName www.ojhaslam.co.uk
ServerAlias www.ojhaslam.co.uk
RedirectMatch permanent /(.*) http://ojhaslam.co.uk/$1
DocumentRoot /var/www/photo365/
</VirtualHost>

但問題仍然存在 - 為什麼它適用於一個域,而不適用於另一個域?

CNAME 記錄的目的不是重定向,而是模仿另一條記錄。

您需要告訴客戶端重定向。這可以通過以下任一方式實現:

1)為名稱創建新的虛擬主機www.,並使用Redirect指令,如下所示:

<VirtualHost *:80>
ServerName www.ojhaslam.co.uk
...
Redirect ojhaslam.co.uk
</VirtualHost>

2)使用mod_rewrite

<VirtualHost *:80>
ServerName ojhaslam.co.uk
ServerAlias www.ojhaslam.co.uk
...
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [L,R=301]
</VirtualHost>

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