如何讓apache支持.htaccess 解決Internal Server Error The server …錯誤

如何讓apache支持.htaccess 解決Internal Server Error The server …錯誤

文章來源:小灰博客| 時間:2013-12-25 12:17:08| 做者:Leo | 2 條評論php

文章分類:IT技術分享PHP小技巧     標籤: .htaccessapachehtml

今天朋友發來一套叫「PHP愛家房產網源碼v5.01_destoon內核%4017558.net」的程序,讓修改點東西,我在本地環境打開測試,導入數據庫後打開發現報錯,應該是服務器內部錯誤,提示nginx

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.數據庫

Please contact the server administrator, admin@sky00.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.apache

More information about this error may be available in the server error log.安全

apacheerr

我看了下這裏網站裏的全部東西都是這樣報錯,就是圖片和TXT也打不開,而後查看了一下程序發現裏面有三個文件.htaccess、 httpd.ini、nginx.conf,我想應該是這幾個傢伙在做怪,首先想到的就是.htaccess這個分佈文件,將其刪除,果斷打開網站了,那 麼找到緣由了,把刪除了的找回來,去apache裏開啓.htaccess就行了,下面是開啓方法:服務器

在apache配置文件httpd.conf中找到dom

Options FollowSymLinks 
AllowOverride None 編輯器

有的版本是這樣寫的分佈式

Options FollowSymLinks ExecCGI Indexes
AllowOverride None

總之無論怎麼寫,你只須要把下面的

AllowOverride None改成AllowOverride All

 

而後在找到

LoadModule rewrite_module modules/mod_rewrite.so

把這個前面的「#」號去掉,就是去掉註釋,而後重啓apache.搞定!

 

下面記載點.htaccess的寫法

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個額外的文件,就算這些文件都不存在,這也是本文開始說會影響服務器的一點性能的緣由。其次是安全。這樣會容許用戶本身修改服務器的配置,這可能會致使某些意想不到的修改,因此請認真考慮是否應當給予用戶這樣的特權。

相關文章
相關標籤/搜索