Domain-Name-System

無需輸入 www 即可使網站可用

  • November 10, 2011

我有一個可以通過 www.example.com 訪問的網站。現在我想讓它也可以在 example.com 下訪問。我怎樣才能做到這一點?

我有幾個子域,例如 test.example.com、test2.example.com 等。我也讀了一點,發現應該使用htaccess永久重定向從 example.com 到 www.example.com

RewriteCond %{http_host} ^example.com [nc]
RewriteRule ^(.*)$ http://www.example.com/$1 [r=301,nc]

所以現在不應該有重複的內容,它應該是 SEO 友好的。但是我該如何創建A-record?現在只有一個 www.example.com。如果我使用 example.com 創建一個,它將自動映射到 example.com.example.com …

然後我必須在主機文件中添加一個條目。這看起來像這樣嗎?

192.168.1.1 example.com

比我有一些用於 apache 的 VirtualHost 條目。這個文件正確嗎?

<VirtualHost 192.168.1.1:80>
ServerName www.example.com
ServerAlias *.www.example.com
ServerAlias example.com

ServerAdmin webmaster@example.com

DocumentRoot /var/www/html/path

<Directory /var/www/html/path>
 AllowOverride None
 Options +FollowSymLinks -Indexes -Includes +Multiviews +ExecCGI
 Order allow,deny
 Allow from all
 AllowOverride All
</Directory>
</VirtualHost>

解決方案:

<VirtualHost 192.168.1.1:80>
   ServerName example.com
   Redirect 301 / http://www.example.com/
</VirtualHost>

<VirtualHost 192.168.1.1:80>
   ServerName www.example.com
   ServerAlias *.www.example.com

   ServerAdmin webmaster@example.com

   DocumentRoot /var/www/html/path

   <Directory /var/www/html/path>
       AllowOverride None
       Options +FollowSymLinks -Indexes -Includes +Multiviews +ExecCGI
       Order allow,deny
       Allow from all
       AllowOverride All
   </Directory>
</VirtualHost>

我將這與兩個指向 Web 伺服器所在 IP 地址的 A 記錄(一個用於 www.example.com 和 example.com)一起製作。此外,我有以下條目/etc/hosts

192.168.1.1 www.example.com example.com

我還從 squid 聲明了我的白名單條目:

.example.com

但是我必須如何創建 A 記錄?現在只有一個 www.example.com。如果我使用 example.com 創建一個,它將自動映射到 example.com.example.com …

為什麼是 example.com.example.com?只需讓您的 DNS 主機為指向伺服器 IP 地址的 @(域本身)放入 A 記錄。

然後我必須在主機文件中添加一個條目

不是,如果它在 DNS 中,不,你沒有。

比我有一些用於 apache 的 VirtualHost 條目。這個文件正確嗎?

我個人的偏好是將“裸”域名放在其自己的部分中,並使用一個簡單的Redirect permanent指令將使用者推送到 www 站點。

這將避免必須解析帶有條件重定向的 .htaccess 文件對性能的(誠然適度的)影響。

這也意味著您將獲得兩個名稱的單獨日誌文件。恕我直言,這是一件好事——它可以更容易地分辨出哪些域使用者實際上來自哪個域,並且避免了在一個虛擬伺服器中完成時您會在日誌中得到的雙重輸入。

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