1. 程式人生 > >.htaccess “分散式配置檔案” apache開啟.htaccess及.htaccess的使用方法

.htaccess “分散式配置檔案” apache開啟.htaccess及.htaccess的使用方法

今天本地除錯PHP程式,用到了.htaccess,而預設配置裡面開啟.htaccess,在網上找到了開啟.htaccess的可行方法,供朋友們借鑑。(開啟的我他的方法不行,查找了一下AllowOverride None全部的都給換成AllowOverride All就了,原因不明,O(∩_∩)O~ 記得修改完httpd.conf以後一定要重啟下apache才的哦~ ) 
1 . 如何讓的本地APACHE器.htaccess 
如何讓的本地APACHE器".htaccess"呢?其實只要簡樸修改一下apache的httpd.conf設定就讓APACHE.htaccess了,來看看操作 

開啟httpd.conf(在那裡? APACHE目錄的CONF目錄裡面),用文字編纂器開啟後,查詢 
(1) 
Options FollowSymLinks 
AllowOverride None 

改為 
Options FollowSymLinks 
AllowOverride All 

(2)去掉下面的註釋 
LoadModule rewrite_module modules/mod_rewrite.so 

就了 

2. htaccess 寫法 
  Apache中的.htaccess(或者”分散式配置”了針對目錄改變配置的方法,即,在特定的文件目錄中放置包含或多個指令的,以作用於此目錄及其子目錄。作為,所能的命令受到限制。***Apache的AllowOverride指令來設定。 

  子目錄中的指令會籠蓋更高階目錄或者主器配置中的指令。 

  .htaccess必需以ASCII模式上傳,最好將其許可權設定為644。 

  錯誤文件的定位 

  常用的客戶端哀求錯誤返回程式碼: 
  401 Authorization Required 
  403 Forbidden 
  404 Not Found 
  405 Method Not Allowed 
  408 Request Timed Out 
  411 Content Length Required 
  412 Precondition Failed 
  413 Request Entity Too Long 
  414 Request URI Too Long 
  415 Unsupported Media Type 

  常見的器錯誤返回程式碼: 
  500 Internal Server Error 

  利用.htaccess指定事先製作好的錯誤提醒頁面。一般下,人們專門設立目錄,例如errors放置頁面。然後再.htaccess中,加入如下的指令: 

  ErrorDocument 404 /errors/notfound.html 
  ErrorDocument 500 /errors/internalerror.html 

  一條指令一行。上述第一條指令的意思是對於404,也找到所的文件的得顯示頁面為/errors目錄下的notfound.html頁面。不難看出語法格局為: 

  ErrorDocument 錯誤程式碼 /目錄名/名.副檔名 

  所提示的很少的話,不必專門製作頁面,直接在指令中HTML號了,例如下面例子: 

  ErrorDocument 401 “你許可權訪問該頁面,請拋卻!” 

  文件訪問的密碼保護 

  要利用.htaccess對某個目錄下的文件設定訪問和對應的密碼,首先要做的是生成.htpasswd的文字文件,例如: 

  zheng:y4E7Ep8e7EYV 

  這裡密碼經由加密,找些工具將密碼加密成.htaccess的編碼。該文件最好不要放在www目錄下,建議放在www根目錄文件之外,這樣更為安全些。 

  有了授權文件,在.htaccess中加入如下指令了: 

  AuthUserFile .htpasswd的器目錄 
  AuthGroupFile /dev/null (授權訪問的目錄) 
  AuthName EnterPassword 
  AuthType Basic (授權型別) 

  是的主人,應該處處為著想。 —— 雷鋒 
  require user wsabstract (允許訪問的,但願表中都允許, require valid-user) 

  注,括號部門為學習新增的註釋 

  拒絕來自某個IP的訪問 

  我不想某個政府部門訪問到站點的,那.htaccess中加入該部門的IP而將它們拒絕在外。 

  例如: 

  order allow,deny 
  deny from 210.10.56.32 
  deny from 219.5.45. 
  allow from all 

  第二行拒絕某個IP,第三行拒絕某個IP段,也219.5.45.0~219.2.45.255 

  想要拒絕人?用deny from all好了。不止用IP,也用域名來設定。 

  保護.htaccess文件 

  在.htaccess來設定目錄的密碼保護時,它包含了密碼的路徑。從安全考慮,有必要把.htaccess也保護起來,不讓別人看到其中的。雖然用其他做到這點,好比文件的許可權。不外,.htaccess本身也能做到,只需加入如下的指令: 

  order allow,deny 
  deny from all 

  URL轉向 

  可能對重新規劃,將文件了遷移,或者更改了目錄。這,來自搜尋引擎或者其他連結過來的訪問就可能犯錯。這種下,如下指令來完成舊的URL自動轉向到新的: 

  Redirect /舊目錄/舊文件名 新文件的 

  或者整個目錄的轉向: 

  Redirect 舊目錄 新目錄 

  改變預設的首頁 

  一般下預設的首頁名有default、index等。不外,有些目錄中沒出預設,而是某個特定的名,好比在pmwiki中是 pmwiki.php。這種下,要記住名來訪問很麻煩。在.htaccess中等閒的設定新的預設名: 

  DirectoryIndex 新的預設名 

  也列出多個,順序表明它們之間的優先級別,例如: 

  DirectoryIndex filename.html index.cgi index.pl default.htm 

  防止盜鏈 

  不喜歡別人在的網頁上連線的、文件的話,也htaccess的指令來做到。 

  所的指令如下: 

  RewriteEngine on 
  RewriteCond %{ HTTP_REFERER } !^$ 
  RewriteCond %{ HTTP_REFERER } !^http://(www.)?mydomain.com/.*$ [NC] 
  RewriteRule .(gif&line;jpg)$ - [F] 

  覺得讓別人的頁面開個天窗不好看,那用一張來代替: 

  RewriteEngine on 
  RewriteCond %{ HTTP_REFERER } !^$ 
  RewriteCond %{ HTTP_REFERER } !^http://(www.)?mydomain.com/.*$ [NC] 
  RewriteRule .(gif&line;jpg)$ http://www.mydomain.com/替代名 [R,L] 

其它補充: 
在給出如何配置Apache支援.htaccess檔案之前,首先申明一下:使用.htaccess檔案,會降低httpd伺服器的一點效能。 

配置方法 
找到Apache的httpd.conf配置檔案,編輯器開啟。 

//找到 
<Directory /> 
  Options FollowSymLinks 
  AllowOverride None 
</Directory> 

//修改為 

<Directory /> 
  Options FollowSymLinks 
  AllowOverride All 
</Directory> 

//就可以了 

/* 
如果需要使用.htaccess以外的其他檔名,可以用AccessFileName指令來改變。 
例如,需要使用.config ,則可以在伺服器配置檔案中按以下方法配置: 
*/ 
AccessFileName .config  通常,.htaccess檔案使用的配置語法和主配置檔案一樣。AllowOverride指令按類別決定了.htaccess檔案中哪些指令才是有效的。 

(不)使用.htaccess檔案的場合 
  一般情況下,不應該使用.htaccess檔案,除非你對主配置檔案沒有訪問許可權。有一種很常見的誤解,認為使用者認證只能通過.htaccess檔案實現,其實並不是這樣,把使用者認證寫在主配置檔案中是完全可行的,而且是一種很好的方法。 
  .htaccess檔案應該被用在內容提供者需要針對特定目錄改變伺服器的配置而又沒有root許可權的情況下。如果伺服器管理員不願意頻繁修改配置,則可以允許使用者通過.htaccess檔案自己修改配置,尤其是ISP在同一個機器上運行了多個使用者站點,而又希望使用者可以自己改變配置的情況下。 
  雖然如此,一般都應該儘可能地避免使用.htaccess檔案。任何希望放在.htaccess檔案中的配置,都可以放在主配置檔案的段中,而且更高效。 
避免使用.htaccess檔案有兩個主要原因。 
  首先是效能。如果AllowOverride啟用了.htaccess檔案,則Apache需要在每個目錄中查詢.htaccess檔案,因此,無論是否真正用到,啟用.htaccess都會導致效能的下降。另外,對每一個請求,都需要讀取一次.htaccess檔案。 
  還有,Apache必須在所有上級的目錄中查詢.htaccess檔案,以使所有有效的指令都起作用,所以,如果請求/ctusky/ctu/sky中的頁面,Apache必須查詢以下檔案: 

/.htaccess 
/ctusky/.htaccess 
/ctusky/ctu/.htaccess 
/ctusky/ctu/sky/.htaccess  一共就要訪問4個額外的檔案,就算這些檔案都不存在,這也是本文開始說會影響伺服器的一點效能的原因。 
  其次是安全。這樣會允許使用者自己修改伺服器的配置,這可能會導致某些意想不到的修改,所以請認真考慮是否應當給予使用者這樣的特權。 個人分類:
  php