apache .htaccess 寫法

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 寫法
 ------------------------------------------------------------------------------------------

<IfModule mod_rewrite.c>
RewriteEngine on
#rewritebase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

#RewriteRule ^([^\.&]*)$  index.php\?rewrite_param=$1 [QSA,L]
RewriteRule  ^ctl-(.*)/id/([0-9]+)    index.php?ctl=$1&id=$2 [QSA,L]
RewriteRule  ^ctl-(.*)/type/([0-9]+)    index.php?ctl=$1&type=$2 [QSA,L]  
ErrorDocument 404 /index.php
</IfModule>

-------------------------------------------------------------------------------------------

<FilesMatch "\.(bak|inc|lib|sh|tpl|lbi|dwt)$">
    order deny,allow
    deny from all
</FilesMatch>

RewriteEngine On
#RewriteBase /

# direct one-word access
RewriteRule ^index\.html$    index\.php [L]
RewriteRule ^category$      index\.php [L]

# access any object by its numeric identifier
RewriteRule ^feed-c([0-9]+)\.xml$       feed\.php\?cat=$1 [L]
RewriteRule ^feed-b([0-9]+)\.xml$       feed\.php\?brand=$1 [L]
RewriteRule ^feed-type([^-]+)\.xml$       feed\.php\?type=$1 [L]
RewriteRule ^feed\.xml$                 feed\.php [L]

RewriteRule ^category-([0-9]+)-b([0-9]+)-min([0-9]+)-max([0-9]+)-attr([^-]*)-([0-9]+)-(.+)-([a-zA-Z]+)(.*)\.html$  category\.php\?id=$1&brand=$2&price_min=$3&price_max=$4&filter_attr=$5&page=$6&sort=$7&order=$8 [QSA,L]
RewriteRule ^category-([0-9]+)-b([0-9]+)-min([0-9]+)-max([0-9]+)-attr([^-]*)(.*)\.html$                            category\.php\?id=$1&brand=$2&price_min=$3&price_max=$4&filter_attr=$5 [QSA,L]
RewriteRule ^category-([0-9]+)-b([0-9]+)-([0-9]+)-(.+)-([a-zA-Z]+)(.*)\.html$                                      category\.php\?id=$1&brand=$2&page=$3&sort=$4&order=$5 [QSA,L]
RewriteRule ^category-([0-9]+)-b([0-9]+)-([0-9]+)(.*)\.html$                                                       category\.php\?id=$1&brand=$2&page=$3  [QSA,L]
RewriteRule ^category-([0-9]+)-b([0-9]+)(.*)\.html$                                                                category\.php\?id=$1&brand=$2  [QSA,L]
RewriteRule ^category-([0-9]+)(.*)\.html$       

-------------------------------------------------------------------------------------------
  常用的客戶端哀求錯誤返回代碼:
  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個額外的文件,就算這些文件都不存在,這也是本文開始說會影響服務器的一點性能的原因。
  其次是安全。這樣會允許用戶自己修改服務器的配置,這可能會導致某些意想不到的修改,所以請認真考慮是否應當給予用戶這樣的特權。

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章