21非常有用的htaccess的方法與技巧

21非常有用的htaccess的方法與技巧

Apache Web服務器有一個偉大的方式來處理信息,使用htaccess的文件。htaccess文件(超文本的訪問)的目錄級別的配置文件,允許Web服務器配置的分散管理的默認名稱。htaccess文件是放置在Web樹,是能夠覆蓋服務器的全局配置的一個子集,這個子集的程度是由Web服務器管理員定義。。htaccess的最初目的是讓每個目錄訪問控制(例如,需要密碼才能訪問的內容),因此這個名字。如今的。htaccess可以覆蓋許多其他配置設置,主要涉及內容的控制,例如,內容類型和字符集,CGI處理程序,等等。

以下是一些非常有用的htaccess的技巧。   站長百科  PHP教程同步首發

1。自定義目錄索引文件

xml代碼  收藏代碼
  1. DirectoryIndex index.html index.php index.htm  

您的htaccess文件中使用上面的片段,你可以改變默認的索引文件的目錄。如果一個用戶請求/ foo /中,Apache將服務是/ foo / index.html的,或您指定的任何文件。

2。自定義錯誤頁面

xml代碼  收藏代碼
  1. ErrorDocument 404 errors/404.html   

您可能希望將用戶重定向到一個錯誤頁面是像404的HTTP錯誤發生。您可以使用htaccess文件中映射的404錯誤錯誤頁errors/404.html的上面的片段。你也可能想要寫一個共同的頁面,所有HTTP錯誤如下:

xml代碼  收藏代碼
  1. ErrorDocument 404 /psych/cgi-bin/error/error?404   

3。控制在文件和目錄級別的訪問

htaccess是最常用的限制或拒絕個別文件和文件夾的訪問。一個典型的例子是“包括”文件夾。您的網站的網頁可以調用這些腳本,所有他們喜歡的,但你不希望用戶訪問這些文件,直接在網上。在這種情況下,你會下降。htaccess文件,像這樣的內容包括夾。

xml代碼  收藏代碼
  1. # no one gets in here!  
  2. deny from all  

這將拒絕所有直接訪問該文件夾中的任何文件。你可以與你的情況更具體,例如訪問限制到一個特定的IP範圍,這裏有一個方便的頂級本地測試服務器的規則。

xml代碼  收藏代碼
  1. # no nasty crackers in here!  
  2. order deny,allow  
  3. deny from all  
  4. allow from 192.168.0.0/24  
  5. # this would do the same thing..  
  6. #allow from 192.168.0  

一般來說,這些要求的各種反彈防火牆無論如何,而是一個活生生的服務器上,他們成爲有用過濾掉不受歡迎的IP塊,已知的風險,很多事情。

有時候,你只會想禁止一個IP,也許是一些持久的機器人,不按規則玩。

xml代碼  收藏代碼
  1. # someone else giving the ruskies a bad name..  
  2. order allow,deny  
  3. deny from 83.222.23.219  
  4. allow from all  

4。修改環境變量

環境變量包含服務器端所使用的信息,包括和CGI。設置/取消設置環境變量使用SETENVUnSetEnv

xml代碼  收藏代碼
  1. SetEnv SITE_WEBMASTER "Jack Sprat"  
  2. SetEnv SITE_WEBMASTER_URI mailto:[email protected]  
  3.   
  4. UnSetEnv REMOTE_ADDR   

5。301重定向使用htaccess的

如果你想從舊的文件重定向到新:

xml代碼  收藏代碼
  1. Redirect 301 /old/file.html http://yourdomain.com/new/file.html  

使用以下重定向整個目錄。

xml代碼  收藏代碼
  1. RedirectMatch 301 /blog(.*) http://yourdomain.com/$1  

6。實施計劃。htaccess文件高速緩存

緩存的靜態文件,並提高您的網站的性能。

xml代碼  收藏代碼
  1. # year  
  2. <FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|swf|mp3|mp4)$">  
  3. Header set Cache-Control "public"  
  4. Header set Expires "Thu, 15 Apr 2010 20:00:00 GMT"  
  5. Header unset Last-Modified  
  6. </FilesMatch>  
  7. #2 hours  
  8. <FilesMatch "\.(html|htm|xml|txt|xsl)$">  
  9. Header set Cache-Control "max-age=7200, must-revalidate"  
  10. </FilesMatch>  
  11. <FilesMatch "\.(js|css)$">  
  12. SetOutputFilter DEFLATE  
  13. Header set Expires "Thu, 15 Apr 2010 20:00:00 GMT"  
  14. </FilesMatch>  

7。使用GZIP壓縮輸出

下面的代碼片斷添加到您的htaccess文件和壓縮所有的CSS,JS,用gzip壓縮的HTML文件。

xml代碼  收藏代碼
  1. <IfModule mod_gzip.c>  
  2.     mod_gzip_on       Yes  
  3.     mod_gzip_dechunk  Yes  
  4.     mod_gzip_item_include file      \.(html?|txt|css|js|php|pl)$  
  5.     mod_gzip_item_include handler   ^cgi-script$  
  6.     mod_gzip_item_include mime      ^text/.*  
  7.     mod_gzip_item_include mime      ^application/x-javascript.*  
  8.     mod_gzip_item_exclude mime      ^image/.*  
  9.     mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*  
  10. </IfModule>  

上面的代碼工作mod_gzip模塊只有在您的Web服務器中啓用。如果您的網絡服務器提供支持mod_deflate模塊,您可能需要添加下面的代碼片斷。

xml代碼  收藏代碼
  1. <Location>  
  2.     SetOutputFilter DEFLATE  
  3.       SetEnvIfNoCase Request_URI  \  
  4.         \.(?:gif|jpe?g|png)$ no-gzip dont-vary  
  5.     SetEnvIfNoCase Request_URI  \  
  6.         \.(?:exe|t?gz|zip|gz2|sit|rar)$ no-gzip dont-vary  
  7. </Location>   

如果您的服務器不支持mod_deflate模塊,那麼你可能需要使用下面的代碼片斷。

xml代碼  收藏代碼
  1. <FilesMatch "\.(txt|html|htm|php)">  
  2.     php_value output_handler ob_gzhandler  
  3. </FilesMatch>  

8。瀏覽器重定向到HTTPS(SSL)

下面的代碼片斷添加到您的htaccess的和整個網站重定向到HTTPS。

xml代碼  收藏代碼
  1. RewriteEngine On  
  2. RewriteCond %{HTTPS} !on  
  3. RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}  

9。重寫的URL使用htacccess

重寫product.php?ID = 12產品-12.html

xml代碼  收藏代碼
  1. RewriteEngine on  
  2. RewriteRule ^product-([0-9]+)\.html$ product.php?id=$1  

的重寫product.php?ID = 12至product/ipod-nano/12.html

xml代碼  收藏代碼
  1. RewriteEngine on  
  2. RewriteRule ^product/([a-zA-Z0-9_-]+)/([0-9]+)\.html$ product.php?id=$2  

非WWW網址重定向到www的網址

xml代碼  收藏代碼
  1. RewriteEngine On  
  2. RewriteCond %{HTTP_HOST} ^viralpatel\.net$  
  3. RewriteRule (.*) http://www.viralpatel.net/$1 [R=301,L]  

重寫yoursite.com / user.php?用戶名= XYZ yoursite.com / XYZ

xml代碼  收藏代碼
  1. RewriteEngine On  
  2. RewriteRule ^([a-zA-Z0-9_-]+)$ user.php?username=$1  
  3. RewriteRule ^([a-zA-Z0-9_-]+)/$ user.php?username=$1  

域名重定向到新的子文件夾內的public_html

xml代碼  收藏代碼
  1. RewriteEngine On  
  2. RewriteCond %{HTTP_HOST} ^test\.com$ [OR]  
  3. RewriteCond %{HTTP_HOST} ^www\.test\.com$  
  4. RewriteCond %{REQUEST_URI} !^/new/  
  5. RewriteRule (.*) /new/$1   

10。防止目錄列表

添加下面的代碼片段,以避免目錄列表。

xml代碼  收藏代碼
  1. Options -Indexes  

xml代碼  收藏代碼
  1. IndexIgnore *   

11。添加新的MIME類型

取決於文件擴展名的文件類型。無法識別的文件擴展名被視爲文本數據,並下載損壞。

xml代碼  收藏代碼
  1. AddType application/x-endnote-connection enz  
  2. AddType application/x-endnote-filter enf  
  3. AddType application/x-spss-savefile sav  

12。拒絕訪問靜態文件數據

如果推薦人是不是本地站點或空否認有任何靜態文件(圖像,CSS等)的要求。

xml代碼  收藏代碼
  1. RewriteCond %{HTTP_REFERER} !^$  
  2. RewriteCond %{REQUEST_URI} !^/(wp-login.php|wp-admin/|wp-content/plugins/|wp-includes/).* [NC]  
  3. RewriteCond %{HTTP_REFERER} !^http://www.askapache.com.*$ [NC]  
  4. RewriteRule \.(ico|pdf|flv|jpg|jpeg|mp3|mpg|mp4|mov|wav|wmv|png|gif|swf|css|js)$ - [F,NS,L]  

13。指定上傳htaccess的PHP文件限制

xml代碼  收藏代碼
  1. php_value upload_max_filesize 20M  
  2. php_value post_max_size 20M  
  3. php_value max_execution_time 200  
  4. php_value max_input_time 200  

在上面的。htaccess文件,上傳能力由四個參數,第一個是最大上傳文件大小的增加,第二個是後數據的最大大小,第三個是在幾秒鐘的時間上限,允許腳本運行之前,它是終止解析器允許一個腳本解析輸入數據,如像文件上傳,最後一個是在幾秒鐘內最大的一次,POST和GET數據。

14。禁止腳本執行

xml代碼  收藏代碼
  1. Options -ExecCGI  
  2. AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi  

15。更改字符集和語言的頭文件

xml代碼  收藏代碼
  1. AddDefaultCharset UTF-8  
  2. DefaultLanguage en-US  

16。設置服務器的時區(GMT)

xml代碼  收藏代碼
  1. SetEnv TZ America/Indianapolis  

17。力“的文件另存爲”提示“

xml代碼  收藏代碼
  1. AddType application/octet-stream .avi .mpg .mov .pdf .xls .mp4  

18。一個單一的文件保護

通常情況下的。htaccess適用於整個目錄。隨着 指令,你可以限制到特定的文件:

xml代碼  收藏代碼
  1. <Files quiz.html>  
  2. order deny,allow  
  3. deny from all  
  4. AuthType Basic  
  5. AuthName "Characterology Student Authcate"  
  6. AuthLDAP on  
  7. AuthLDAPServer ldap://directory.characterology.com/  
  8. AuthLDAPBase "ou=Student, o=Characterology University, c=au"  
  9. require valid-user  
  10. satisfy any  
  11. </Files>   

19。使用htaccess的設置cookie

設置環境變量的Cookie

xml代碼  收藏代碼
  1. Header set Set-Cookie "language=%{lang}e; path=/;" env=lang  

基於請求設置的Cookie。此代碼將創建在客戶端上的Cookie,在第二個括號匹配項的值的Set-Cookie頭。

xml代碼  收藏代碼
  1. RewriteEngine On  
  2. RewriteBase /  
  3. RewriteRule ^(.*)(de|es|fr|it|ja|ru|en)/$ - [co=lang:$2:.yourserver.com:7200:/]  

20。寄自定義頁眉

xml代碼  收藏代碼
  1. Header set P3P "policyref=\"http://www.askapache.com/w3c/p3p.xml\""  
  2. Header set X-Pingback "http://www.askapache.com/xmlrpc.php"  
  3. Header set Content-Language "en-US"  
  4. Header set Vary "Accept-Encoding"  

21。根據User-Agent頭阻塞請求

xml代碼  收藏代碼
  1. SetEnvIfNoCase ^User-Agent$ .*(craftbot|download|extract|stripper|sucker|ninja|clshttp|webspider|leacher|collector|grabber|webpictures) HTTP_SAFE_BADBOT  
  2. SetEnvIfNoCase ^User-Agent$ .*(libwww-perl|aesop_com_spiderman) HTTP_SAFE_BADBOT  
  3. Deny from env=HTTP_SAFE_BADBOT  

 


發佈了139 篇原創文章 · 獲贊 24 · 訪問量 73萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章