freebsd9.1源碼安裝apache.mysql.php環(huán)境 freebsd安裝python
2024-02-22
更新時(shí)間:2024-02-22 00:09:47作者:未知
今天本地調(diào)試PHP程序,用到了.htaccess,而默認(rèn)配置里面開啟.htaccess,在網(wǎng)上找到了開啟.htaccess的可行方法,供朋友們借鑒。(開啟的我他的方法不行,查找了一下AllowOverride None全部的都給換成AllowOverride All就了,原因不明,O(∩_∩)O~ 記得修改完httpd.conf以后一定要重啟下apache才的哦~ )
1 . 如何讓的本地APACHE器.htaccess
如何讓的本地APACHE器".htaccess"呢?其實(shí)只要簡(jiǎn)樸修改一下apache的httpd.conf設(shè)置就讓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(或者”分布式配置”了針對(duì)目錄改變配置的方法,即,在特定的文檔目錄中放置包含或多個(gè)指令的,以作用于此目錄及其子目錄。作為,所能的命令受到限制。***Apache的AllowOverride指令來設(shè)置。
子目錄中的指令會(huì)籠蓋更高級(jí)目錄或者主器配置中的指令。
.htaccess必需以ASCII模式上傳,最好將其權(quán)限設(shè)置為644。
錯(cuò)誤文檔的定位
常用的客戶端哀求錯(cuò)誤返回代碼:
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
常見的器錯(cuò)誤返回代碼:
500 Internal Server Error
利用.htaccess指定事先制作好的錯(cuò)誤提醒頁(yè)面。一般下,人們專門設(shè)立目錄,例如errors放置頁(yè)面。然后再.htaccess中,加入如下的指令:
ErrorDocument 404 /errors/notfound.html
ErrorDocument 500 /errors/internalerror.html
一條指令一行。上述第一條指令的意思是對(duì)于404,也找到所的文檔的得顯示頁(yè)面為/errors目錄下的notfound.html頁(yè)面。不難看出語(yǔ)法格局為:
ErrorDocument 錯(cuò)誤代碼 /目錄名/名.擴(kuò)展名
所提示的很少的話,不必專門制作頁(yè)面,直接在指令中HTML號(hào)了,例如下面例子:
ErrorDocument 401 “你權(quán)限訪問該頁(yè)面,請(qǐng)拋卻!”
文檔訪問的密碼保護(hù)
要利用.htaccess對(duì)某個(gè)目錄下的文檔設(shè)定訪問和對(duì)應(yīng)的密碼,首先要做的是生成.htpasswd的文本文檔,例如:
zheng:y4E7Ep8e7EYV
這里密碼經(jīng)由加密,找些工具將密碼加密成.htaccess的編碼。該文檔最好不要放在www目錄下,建議放在www根目錄文檔之外,這樣更為安全些。
有了授權(quán)文檔,在.htaccess中加入如下指令了:
AuthUserFile .htpasswd的器目錄
AuthGroupFile /dev/null (授權(quán)訪問的目錄)
AuthName EnterPassword
AuthType Basic (授權(quán)類型)
是的主人,應(yīng)該處處為著想。 —— 雷鋒
require user wsabstract (允許訪問的,但愿表中都允許, require valid-user)
注,括號(hào)部門為學(xué)習(xí)添加的注釋
拒絕來自某個(gè)IP的訪問
我不想某個(gè)政府部門訪問到站點(diǎn)的,那.htaccess中加入該部門的IP而將它們拒絕在外。
例如:
order allow,deny
deny from 210.10.56.32
deny from 219.5.45.
allow from all
第二行拒絕某個(gè)IP,第三行拒絕某個(gè)IP段,也219.5.45.0~219.2.45.255
想要拒絕人?用deny from all好了。不止用IP,也用域名來設(shè)定。
保護(hù).htaccess文檔
在.htaccess來設(shè)置目錄的密碼保護(hù)時(shí),它包含了密碼的路徑。從安全考慮,有必要把.htaccess也保護(hù)起來,不讓別人看到其中的。雖然用其他做到這點(diǎn),好比文檔的權(quán)限。不外,.htaccess本身也能做到,只需加入如下的指令:
order allow,deny
deny from all
URL轉(zhuǎn)向
可能對(duì)重新規(guī)劃,將文檔了遷移,或者更改了目錄。這,來自搜索引擎或者其他鏈接過來的訪問就可能犯錯(cuò)。這種下,如下指令來完成舊的URL自動(dòng)轉(zhuǎn)向到新的:
Redirect /舊目錄/舊文檔名 新文檔的
或者整個(gè)目錄的轉(zhuǎn)向:
Redirect 舊目錄 新目錄
改變?nèi)笔〉氖醉?yè)
一般下缺省的首頁(yè)名有default、index等。不外,有些目錄中沒出缺省,而是某個(gè)特定的名,好比在pmwiki中是 pmwiki.php。這種下,要記住名來訪問很麻煩。在.htaccess中等閑的設(shè)置新的缺省名:
DirectoryIndex 新的缺省名
也列出多個(gè),順序表明它們之間的優(yōu)先級(jí)別,例如:
DirectoryIndex filename.html index.cgi index.pl default.htm
防止盜鏈
不喜歡別人在的網(wǎng)頁(yè)上連接的、文檔的話,也htaccess的指令來做到。
所的指令如下:
RewriteEngine on
RewriteCond %{ HTTP_REFERER } !^$
RewriteCond %{ HTTP_REFERER } !^http://(www.)?mydomain.com/.*$ [NC]
RewriteRule .(gif&line;jpg)$ - [F]
覺得讓別人的頁(yè)面開個(gè)天窗不好看,那用一張來代替:
RewriteEngine on
RewriteCond %{ HTTP_REFERER } !^$
RewriteCond %{ HTTP_REFERER } !^http://(www.)?mydomain.com/.*$ [NC]
RewriteRule .(gif&line;jpg)$ http://www.mydomain.com/替代名 [R,L]
其它補(bǔ)充:
在給出如何配置Apache支持.htaccess文件之前,首先申明一下:使用.htaccess文件,會(huì)降低httpd服務(wù)器的一點(diǎn)性能。
配置方法
找到Apache的httpd.conf配置文件,編輯器打開。
//找到
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
//修改為
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
//就可以了
/*
如果需要使用.htaccess以外的其他文件名,可以用AccessFileName指令來改變。
例如,需要使用.config ,則可以在服務(wù)器配置文件中按以下方法配置:
*/
AccessFileName .config通常,.htaccess文件使用的配置語(yǔ)法和主配置文件一樣。AllowOverride指令按類別決定了.htaccess文件中哪些指令才是有效的。
(不)使用.htaccess文件的場(chǎng)合
一般情況下,不應(yīng)該使用.htaccess文件,除非你對(duì)主配置文件沒有訪問權(quán)限。有一種很常見的誤解,認(rèn)為用戶認(rèn)證只能通過.htaccess文件實(shí)現(xiàn),其實(shí)并不是這樣,把用戶認(rèn)證寫在主配置文件中是完全可行的,而且是一種很好的方法。
.htaccess文件應(yīng)該被用在內(nèi)容提供者需要針對(duì)特定目錄改變服務(wù)器的配置而又沒有root權(quán)限的情況下。如果服務(wù)器管理員不愿意頻繁修改配置,則可以允許用戶通過.htaccess文件自己修改配置,尤其是ISP在同一個(gè)機(jī)器上運(yùn)行了多個(gè)用戶站點(diǎn),而又希望用戶可以自己改變配置的情況下。
雖然如此,一般都應(yīng)該盡可能地避免使用.htaccess文件。任何希望放在.htaccess文件中的配置,都可以放在主配置文件的段中,而且更高效。
避免使用.htaccess文件有兩個(gè)主要原因。
首先是性能。如果AllowOverride啟用了.htaccess文件,則Apache需要在每個(gè)目錄中查找.htaccess文件,因此,無論是否真正用到,啟用.htaccess都會(huì)導(dǎo)致性能的下降。另外,對(duì)每一個(gè)請(qǐng)求,都需要讀取一次.htaccess文件。
還有,Apache必須在所有上級(jí)的目錄中查找.htaccess文件,以使所有有效的指令都起作用,所以,如果請(qǐng)求/ctusky/ctu/sky中的頁(yè)面,Apache必須查找以下文件:
/.htaccess
/ctusky/.htaccess
/ctusky/ctu/.htaccess
/ctusky/ctu/sky/.htaccess一共就要訪問4個(gè)額外的文件,就算這些文件都不存在,這也是本文開始說會(huì)影響服務(wù)器的一點(diǎn)性能的原因。
其次是安全。這樣會(huì)允許用戶自己修改服務(wù)器的配置,這可能會(huì)導(dǎo)致某些意想不到的修改,所以請(qǐng)認(rèn)真考慮是否應(yīng)當(dāng)給予用戶這樣的特權(quán)。