認識.htaccess 檔

認識.htaccess 檔

.htaccess 檔是 Apache http 伺服器上的一個設定檔

  1. 設定網頁密碼;
  2. 設定發生錯誤時出現的文件;
  3. 改變首頁的檔案 (index.html);
  4. 禁止讀取檔案;
  5. 重新導向文件;
  6. 加上 MIME 類別;
  7. 防止列出目綠內的檔案..等等

一些例子(內容來自本人例子及網路分享):

1. 使用.htaccess 創建自定義的出錯頁面。

對於Linux Apache來說這是一項極其簡單的事情。使用下面的.htaccess語法你可以輕鬆的完成這一功能。 (把.htaccess放在你的網站根目錄下)
ErrorDocument 401 /error/401.php
ErrorDocument 403 /error/403.php
ErrorDocument 404 /error/404.php
ErrorDocument 500 /error/500.php

2. 設置網站的時區

SetEnv TZ Asia/Taipei

3. 阻止IP列表

有些時候,你需要以IP地址的方式阻止一些訪問。

無論是對於一個IP地址還是一個網段,這都是一件非常簡單的事情,如下所示:
allow from all
deny from 145.186.14.122
deny from 124.15
Apache對於被拒絕的IP會返回403錯誤。

4. 把一些老的鏈接轉到新的鏈接上——搜索引擎優化SEO

Redirect 301 /d/file.html http://www.htaccesselite.com/r/file.html

5. 為服務器管理員設置電子郵件。

ServerSignature EMail
SetEnv SERVER_ADMINdefault@domain.com

6. 使用.htaccess 訪止盜鏈。

如果你網站上的一個圖片被別的N多的網站引用了,那麼,這很有可能會導致你服務器的性能下降,使用下面的代碼可以保護某些熱門的鏈接不被過多的引用。

Options +FollowSymlinks
# Protect Hotlinking
RewriteEngine On

RewriteCond %{HTTP_REFERER} !^$

RewriteCond %{HTTP_REFERER} !^http://(www.)?domainname.com/[nc]

RewriteRule .*.(gif|jpg|png)$http://domainname.com/img/hotlink_f_o.png[nc]

7. 阻止 User Agent 的所有請求

## .htaccess Code :: BEGIN
## Block Bad Bots by user-Agent
SetEnvIfNoCase user-Agent ^FrontPage [NC,OR]
SetEnvIfNoCase user-Agent ^Java.* [NC,OR]
SetEnvIfNoCase user-Agent ^Microsoft.URL [NC,OR]
SetEnvIfNoCase user-Agent ^MSFrontPage [NC,OR]
SetEnvIfNoCase user-Agent ^Offline.Explorer [NC,OR]
SetEnvIfNoCase user-Agent ^[Ww]eb[Bb]andit [NC,OR]
SetEnvIfNoCase user-Agent ^Zeus [NC]

Order Allow,Deny
Allow from all
Deny from env=bad_bot
## .htaccess Code :: END

8. 把某些特殊的IP地址的請求重定向到別的站點

ErrorDocument 403 http://www.youdomain.com
Order deny,allow
Deny from all
Allow from 124.34.48.165
Allow from 102.54.68.123

9. 直接找開文件而不是下載

通常,我們打開網上文件的時候總是會出現一個對話框問我們是下載還是直接打開,使用下面的設置就不會出現這個問題了,直接打開。
AddType application/octet-stream .pdf
AddType application/octet-stream .zip
AddType application/octet-stream .mov

10. 修改文件類型

下面的示例可以讓任何的文件都成為PHP那麼被服務器解釋。比如:myphp, cgi,phtml等。
ForceType application/x-httpd-php
SetHandler application/x-httpd-php

11. 阻止存取.htaccess 文件

# secure htaccess file
order allow,deny
deny from all

12. 保護服務器上的文件被存取

# prevent access of a certain fileorder allow,deny
deny from all

13. 阻止目錄瀏覽

# disable directory browsing
Options All -Indexes

14. 設置默認主頁

# serve alternate default index page
DirectoryIndex about.html

15.擋搜尋引擎

#擋掉百度
SetEnvIfNoCase User-Agent "^Baidu" bad_bot
SetEnvIfNoCase User-Agent "^sogou" bad_bot
SetEnvIfNoCase User-Agent "^Bloghoo" bad_bot
SetEnvIfNoCase User-Agent "^Scooter" bad_bot
Deny from env=bad_bot

#擋掉Google
SetEnvIf User-Agent "^Googlebot" google
Deny from env=google

 

利用.htaccess防止盜連圖片並顯示指定圖片

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://xxx.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://AAA.com/.*$ [NC]
RewriteRule .*.(jpg|gif|png|bmp)$ http://abc/no.jpg [R,NC]

【語法說明】

RewriteEngine:讓下面的rewrite功能打開或關閉。on是打開;off是關閉。
http://xxx.com/:你允許的網站,這些網站可不受此語法的限制。
[NC]:no case的縮寫。意思是忽略大小寫,a-z和A-Z是沒有差別的。
jpg|gif|png|bmp:要限制這些副檔名。
http://abc/no.jpg:當別人盜連時,要顯示該圖片的網址。
[R,NC]:R:redirect的縮寫。意思是重新轉向,當該網址不在上述名單內,自動轉向至你指定的網址。

多力哥的範例:

RewriteEngine on

RewriteCond %{HTTP_REFERER} !^https://blog.hahasmile.com/.*$ [NC]

RewriteCond %{HTTP_REFERER} !^https://blog.hahasmile.com$ [NC]

RewriteRule .*.(jpg|gif|png)$ http://yourname.com/nonoon.png [R,NC]

但你或許會在FACEBOOK或G+上分享文章,這時會無法顯示縮圖
所以可以再加這兩行^^

RewriteCond %{HTTP_USER_AGENT} !^facebookexternalhit [NC]

RewriteCond %{HTTP_REFERER} !^http://(.+\.)?google\.com/ [NC]

測試網址(看看照片是否能在FB上顯示):FACEBOOK Open Graph Object Debugger

 

啟用瀏覽器快取

要增加網站的讀取速度,利用瀏覽器的快取是很重要的方法

先確定mod_expires已經啟用:

編輯 httpd.conf

LoadModule expires_module modules/mod_expires.so

假設我們想要設定圖檔有7天的快取

編輯 .htaccess

<IfModule mod_expires.c>
ExpiresActive on
<FilesMatch "\.(gif|jpeg|jpg|png|ico|js|css|swf)$">
ExpiresDefault "access plus 168 hours"
</FilesMatch>
</IfModule>

也可以單獨設定

<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 2 days"
</IfModule>

 

若你網站更換域名,在舊網站.htaccess加入301轉向語法

RewriteEngine on
RewriteRule (.*) http://newname.com/$1 [R=301,L]

 

http自動轉址到https

# autoTOHTTPS
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

參考:
http://shachi.tw/limit-pictures-theft/
http://sofree.cc/htaccess-img/
http://free.com.tw/wordpress-htaccess-tips-and-tricks/
http://steachs.com/archives/709
將 .htaccess 內容轉譯為 IIS web.config
http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html
Redirecting to or from WWW
線上製作.htaccess
http://www.htaccesseditor.com/tc.shtml

與大家分享...
認識.htaccess 檔
Facebook
0認識.htaccess 檔
Google+
0認識.htaccess 檔
Pinterest
0認識.htaccess 檔
email
0 回復

發表評論

想要留言嗎?
歡迎歡迎!

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *