.htaccess文件是apache環境中的一個重的功能了,特別是針對有很多空間的服務器,是必須
讓每個空間可以自定義.htaccess文件的一些功能的,以下介紹.htaccess的使用方法。.htaccess apache默認是不支持的,如果要支持我們需在于apache中打開。
1,如何讓的本地APACHE支持.htaccess
如何讓的本地APACHE器支持.htaccess文件呢?其實只要簡樸修改一下apache的httpd.conf設置就讓APACHE支持.htaccess文件了,來看看操作。
(1)打開httpd.conf(在那里? APACHE目錄的CONF目錄里面),用文本編纂器打開后,查找
- Options FollowSymLinks
- AllowOverride None
改為
- Options FollowSymLinks
- AllowOverride All
(2)去掉下面的注釋
- LoadModule rewrite_module modules/mod_rewrite.so
將以下相應代碼放到對應目錄中的.htaccess文件,即可實現相應功能。
關閉錯誤顯示:
php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
php_value docref_root 0
php_value docref_ext 0
只顯示PHP錯誤:
php_flag display_errors on
php_flag display_startup_errors on
php_value error_reporting 2047
其中,“2047”為要顯示的錯誤的級別,詳細表格如下:
1 E_ERROR
2 E_WARNING
4 E_PARSE
8 E_NOTICE
16 E_CORE_ERROR
32 E_CORE_WARNING
64 E_COMPILE_ERROR
128 E_COMPILE_WARNING
256 E_USER_ERROR
512 E_USER_WARNING
1024 E_USER_NOTICE
2047 E_ALL
2048 E_STRICT
4096 E_RECOVERABLE_ERROR
要把錯誤保存到日志文件中,可以這樣設置:
- # enable PHP error logging
- php_flag log_errors on
- php_value error_log /home/path/public_html/domain/PHP_errors.log
然后,可以設置不允許訪問.log文件:
- # prevent access to PHP error log
- Order allow,deny
- Deny from all
- Satisfy All
設置錯誤日志的最大體積,以bytes為單位:
- # general directive for setting max error size
- log_errors_max_len integer
綜合上述,.htaccess的PHP錯誤顯示設置匯總:
- # PHP error handling for production servers
- # disable display of startup errors
- php_flag display_startup_errors off
- # disable display of all other errors
- php_flag display_errors off
- # disable html markup of errors
- php_flag html_errors off
- # enable logging of errors
- php_flag log_errors on
- # disable ignoring of repeat errors
- php_flag ignore_repeated_errors off
- # disable ignoring of unique source errors
- php_flag ignore_repeated_source off
- # enable logging of php memory leaks
- php_flag report_memleaks on
- # preserve most recent error via php_errormsg
- php_flag track_errors on
- # disable formatting of error reference links
- php_value docref_root 0
- # disable formatting of error reference links
- php_value docref_ext 0
- # specify path to php error log
- php_value error_log /home/path/public_html/domain/PHP_errors.log
- # specify recording of all php errors
- php_value error_reporting 999999999
- # disable max error string length
- php_value log_errors_max_len 0
- # protect error log by preventing public access
- Order allow,deny
- Deny from all
- Satisfy All
以下則是適合開發者應用的設置:
- # PHP error handling for development servers
- php_flag display_startup_errors on
- php_flag display_errors on
- php_flag html_errors on
- php_flag log_errors on
- php_flag ignore_repeated_errors off
- php_flag ignore_repeated_source off
- php_flag report_memleaks on
- php_flag track_errors on
- php_value docref_root 0
- php_value docref_ext 0
- php_value error_log /home/path/public_html/domain/PHP_errors.log
- php_value error_reporting 999999999
- php_value log_errors_max_len 0
- Order allow,deny
- Deny from all
- Satisfy All
一、錯誤文檔的定位
(1)、常用的客戶端請求錯誤返回代碼:
500 Internal Server Error
(3)、用戶可以利用.htaccess指定自己事先制作好的錯誤提醒頁面。一般情況下,人們可以專門設立一個目錄,例如errors放置這些頁面。然后再.htaccess中,加入如下的指令:
ErrorDocument 404 /errors/notfound.html ErrorDocument 500
/errors/internalerror.html 一條指令一行。
上述第一條指令的意思是對于404,也就是沒有找到所需要的文檔的時候得顯示頁面為/errors目錄下的notfound.html頁面。不難看出語法格式為:
ErrorDocument 錯誤代碼 /目錄名/文件名.擴展名 如果所需要提示的信息很少的話,不必專門制作頁面,直接在指令中使用HTML號了,例如下面這個例子:
- ErrorDocument 401 "<body bgcolor=#ffffff>
- 你沒有權限訪問該頁面!
- </body>"
二、文檔訪問的密碼保護要利用.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.21.112.43deny from 219.146.95 allow from all 注: 第二行拒絕某個IP,第三行拒絕某個IP段,也就是219.146.95.0~219.146.95.255 想要拒絕所有人?用deny from all好了。不止用IP,也可以用域名來設定。
四、保護.htaccess文檔
在使用.htaccess來設置目錄的密碼保護時,它包含了密碼文件的路徑。從安全考慮,有必要把.htaccess也保護起來,不讓別人看到其中的內容。雖然可以用其他方式做到這點,比如文檔的權限。不過,.htaccess本身也能做到,只需加入如下的指令:
- <Files .htaccess> order allow,deny deny from all </Files>
五、URL轉向
我們可能對網站進行重新規劃,將文檔進行了遷移,或者更改了目錄。這時候,來自seo/seo.html" target="_blank">搜索引擎或者其他網站鏈接過來的訪問就可能出錯。這種情況下,可以通過如下指令來完成舊的URL自動轉向到新的地址:Redirect /舊目錄/舊文檔名 新文檔的地址 或者整個目錄的轉向: Redirect 舊目錄 新目錄 改變缺省的首頁文件 一般情況下缺省的首頁文件名有default、index等。不過,有些時候目錄中沒有缺省文件,而是某個特定的文件名,比如在pmwiki中是pmwiki.php。這種情況下,要用戶記住文件名來訪問很麻煩。在.htaccess中可以輕易的設置新的缺省文件名:
DirectoryIndex 新的缺省文件名 也可以列出多個,順序表明它們之間的優先級別.
新聞熱點
疑難解答