一般來說,網站可以用域名和IP來訪問。你的網站可以通過IP直接訪問,本來這沒什么問題,但是會有些隱患:
- 由於搜索引擎也會收錄你的IP地址的頁面,所以同一個頁面搜索引擎會重復收錄,造成頁面的權重不如單個收錄高。
- 域名惡意指向的可能。還記得去年還是前年的 google.com.sb 事件嗎?google.com.sb 這個域名被惡意指向了百度,后來證實了 google.com.sb 這個域名為第三者惡意指向的,並不是Google所為。當然這只是個玩笑,但是如果被人惡意用別的域名解析到你的IP的話,那么你的網站就能通過別人的域名來訪問了。接下來會發生什么?假如那域名是不友善的域名,比如曾經指向非法網站,容易引發搜索引擎懲罰,連帶IP受到牽連。即使域名沒什么問題,但流量也會被劫持到別的域名,從而遭到廣告聯盟的封殺。
- ……
如何解決這個問題?最直接的方法是讓用戶只能通過域名來訪問網站,而不能通過IP來直接訪問。這個可以修改Apache配置文件httpd.conf來實現。下面是小站的實現:
NameVirtualHost 121.*.*.* <VirtualHost 121.*.*.*> ServerName 121.*.*.* <Location /> Order Allow,Deny Deny from all </Location> </VirtualHost> <VirtualHost 121.*.*.*> DocumentRoot /var/www/nowamagic/ ServerName www.nowamagic.net </VirtualHost> <VirtualHost 121.*.*.*> DocumentRoot /var/www/nowamagic/ ServerName nowamagic.net </VirtualHost>
第一部分代碼是實現拒絕直接通過 121.*.*.* 這個IP的任何訪問請求,這時如果你用 121.*.*.* 訪問,會提示拒絕訪問。
第二部分代碼就是允許通過 http://www.nowamagic.net/ 這個域名訪問,主目錄指向 /var/www/nowamagic/ (這里服務器OS是 CentOS)
第三部分代碼是允許不帶 www 的域名訪問,應該能和上面的合並一起寫吧。