robots.txt與.htaccess檔案的用途是什麼?

經常有人會誤會robots.txt與.htaccess檔案的用法,所以我們特別整理資料來說明 …

robots.txt與.htaccess檔案最簡單並且應該知道的事項如下:

(1)robots.txt放置在www根目錄下,.htaccess檔案最好是放置在非www根目錄下(依照Apache安裝設定)。

例如某個空間 /home/yourhosting/ 是你的根目錄

可以設定 /home/yourhosting/www/ 當成是你的www根目錄

(2)robots.txt的目的是告訴搜尋引擎的爬蟲程式,哪些可以抓取,哪些不要抓取。

(3)robots.txt的作用只是告知性質,如果搜尋引擎的爬蟲程式不理會,也沒有辦法。

(4).htaccess檔案是搭配Apache web伺服器軟體運作,其他類型的伺服器軟體未必也使用相同方式。例如如果是Windows IIS 7的話,則是使用web.config來保存應用程式整合設定 (參考)。

(5).htaccess檔案的目的是處理進到網站的所有連線的權限與方式。

(6).htaccess檔案的作用不是告知性質,連線進來就會依照.htaccess檔案內的語法處理。

(7)robots.txt與.htaccess檔案各有其不同的語法。

例如你可以看看Yahoo的robots.txt樣子~ http://www.yahoo.com/robots.txt

所以有沒有注意到? 任何人都可以看到網站的robots.txt檔案,所以你如果有內部使用的目錄,而沒有密碼保護的話,千萬不要把他列在robots.txt內,因為等於告訴大家這裡有機密檔案。就算有密碼保護,其實也是一種安全疑慮,最好不要把內部文件放置在對外公開的伺服器上。

那麼robots.txt應該如何設定呢? 你也可以參考 wikipedia關於robots.txt的解釋

(1)如果你沒有特別需要限制,大都robots.txt內容如下~

User-agent: *
Disallow:

如果你不允許任何爬蟲程式連線,內容如下

User-agent: *
Disallow: /

如果你不允許任何爬蟲程式抓取特定目錄,內容如下

User-agent: *
Disallow: /cgi-bin/
Disallow: /images/
Disallow: /tmp/
Disallow: /private/

當然前面有說到,只是告知性質,爬蟲程式如果不遵守,你也沒皮條就是了。

(2)上面說到的User-agent,就是指定哪些特定的爬蟲程式,星號(*)就是表示所有的爬蟲程式。

例如: Google的User-agent是 googlebot,Bing的User-agent是 bingbot

(微軟的msnbot已經於2010/10/1後不再使用)

而百度的User-agent則是baiduspider,但是百度還是其他的user-agent,請參考 http://www.baidu.com/search/spider.htm

(3)那麼robots.txt還有其他的寫法嗎? 你可以利用具來產生robots.txt。

http://www.searchenginepromotionhelp.com/m/robots-text-creator/simple-robots-creator.php

利用這個工具產生之後,再上傳到網站www的根目錄,再使用Google Webmasters去測試是否正確即可。

robots.txt的觀念非常簡單的,不是嗎? 線上還有許多robots.txt generator,你可以自己找看看。

但是關於.htaccess,就不是這麼簡單幾句話就能夠解釋清楚的了。

我們先簡單介紹最基本的概念,後續再詳細專文介紹。

(1).htaccess檔案是Apache啟動後必須讀取的檔案,其位置看Apache設定。

(2)有時候有些設定也可以放在httpd.conf檔案下,但是httpd.conf只有在Apache啟動時讀取,而.htaccess是在每次連線都會去讀取。

(3).htaccess檔案內的某些宣告,必須配合先載入某些特定模組。例如你要進行URL的301轉址,就必須安裝mod_rewrite模組,才能在.htaccess內進行相關轉址宣告。

以下是.htaccess的幾個例子~

當你要阻擋某個ip連線進來,就可以宣告如下

deny from 46.28.160.1/32

以上的46.28.160.1/32,就是指ip 46.28.160.1不能連線進來,32是指其subnet mask (子網遮罩)是 255.255.255.255 (這個不懂沒關係)。

當你要進行轉址,就可以宣告如下

RewriteEngine on
RewriteCond %{HTTP_HOST}  ^dns.com.tw [nocase]
RewriteRule ^(.*) http://www.dns.com.tw/$1 [last,redirect=301]

RewriteEngine on只需宣告一次,後面的各個轉址就不需要再寫一次。

哇,開始複雜了,上面的轉址就是說: 任何沒有www的URL,都要轉成有www開頭的URL,例如 http://dns.com.tw 會轉成 http://www.dns.com.tw,而 http://dns.com.tw/seo/ 會轉成 http://www.dns.com.tw/seo/

(4)怎麼辦? 這麼複製的語法根本搞不懂,沒關係,你可以使用htaccess editor,這個線上編輯可以簡便的操作一些常用的語法出來。

必須注意的是,許多.htaccess的語法的變化很多,很可能達成一個相同的任務,可以有許多不同的寫法。

如果對上述內容發現有不妥之處,歡迎大家提出討論囉。

敬請留言

你的回應對我們是很重要的. 你的電子郵件將不會被公開.

請等待 ...
*
Loading Facebook Comments ...