2019-11-11 01:19:29 來自:219.85.171.193
 回覆
1樓. 回覆 : 458 時間 : 2020-10-10 18:50:48
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去測試是否正確即可。
(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的語法的變化很多,很可能達成一個相同的任務,可以有許多不同的寫法。