【Apache運維基礎(5)】Apache的Rewrite攻略(2).htaccess文件

簡述

.htaccess文件(或者"分佈式配置文件")提供了針對目錄改變配置的方法, 即,在一個特定的文檔目錄中放置一個包含一個或多個指令的文件, 以做用於此目錄及其全部子目錄。做爲用戶,所能使用的命令受到限制。管理員能夠經過Apache的AllowOverride指令來設置。
Unix、Linux系統或者是任何版本的Apache Web服務器都是支持.htaccess的,可是有的主機服務商可能不容許你自定義本身的.htaccess文件。
啓用.htaccess,須要修改httpd.conf,啓用AllowOverride,並能夠用AllowOverride限制特定命令的使用。若是須要使用.htaccess之外的其餘文件名,能夠用AccessFileName指令來改變。例如,須要使用.config ,則能夠在服務器配置文件中按如下方法配置:AccessFileName .config 。
籠統地說,.htaccess能夠幫咱們實現包括:文件夾密碼保護、用戶自動重定向、自定義錯誤頁面、改變你的文件擴展名、封禁特定IP地址的用戶、只容許特定IP地址的用戶、禁止目錄列表,以及使用其餘文件做爲index文件等一些功能。php

寫法規則

DirectoryIndex zxg.html #改變默認文件

RewriteEngine On #打開或關閉運行時刻的重寫引擎,設置位置:服務器配置, 虛擬主機, 目錄.htaccess  

'-d' (是一個目錄[directory])
將TestString視爲一個路徑名並測試它是否存在並且是一個目錄

'-f' (是一個常規的文件[file])
將TestString視爲一個路徑名並測試它是否存在並且是一個常規的文件

'-l' (是一個符號鏈接[link])
將TestString視爲一個路徑名並測試它是否存在並且是一個符號鏈接

redirect|R [=HttpCode] (強制重定向 redirect)
(使新的URL成爲一個URI) 爲前綴的Substitution能夠強制性執行一個外部重定向。 
若是code沒有指定,則產生一個HTTP響應代碼302(臨時性移動)。
注意: 在使用這個標記時,必須確保該替換字段是一個有效的URL

last|L (最後一個Url規則的重寫last)
當即中止重寫操做,並再也不應用其餘重寫規則。這個標記能夠阻止當前已被重寫的URL爲其後繼的規則所重寫

'forbidden|F' (強制URL爲被禁止的 forbidden)
強制當前URL爲被禁止的,即,當即反饋一個HTTP響應代碼403(被禁止的)

'nocase|NC' (忽略大小寫 no case)它使Pattern忽略大小寫,即, 在Pattern與當前URL匹配時,'A-Z' 和'a-z'沒有區別。

綜合示例

#注意,#只能放在句首,下面句尾的#實際應用要刪除掉
#改變默認文件
DirectoryIndex zxg.html

#僞靜態
RewriteEngine On #打開或關閉運行時刻的重寫引擎,設置位置:服務器配置, 虛擬主機, 目錄.htaccess  
ReWriteRule ^(\d+)_(\d+)\.html news.php?cid=$1&aid=$2 [NC,R=301,L] #301定向,不區分大小寫

#訪問的不是一個文件或目錄的時候就跳轉到一個404.html
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
ReWriteRule .* 404.html [L]

#去掉index.php
RewriteCond $1 !^(index\.php|images|robots\.txt) #任何非 index.php、images 和 robots.txt 的 HTTP 請求都被指向 index.php。
RewriteRule ^(.*)$ /index.php/$1 [L]

#防盜鏈
RewriteCond %{HTTP_REFERER} !^$ #若是來源地址不爲空
RewriteCond %{HTTP_REFERER} !^http://web1.com  #若是不是以http://web1.com開頭
RewriteCond %{REQUEST_FILENAME} .*\.(jpg|jpeg|gif|png) [NC] #若是訪問的是圖片
ReWriteRule .* no.png [L] #就定向到no.png上面去

1.注意它的順序是從上到下,符合某一條件就不走下面條件;因此在寫僞靜態的時候要考慮這個前後順序;
2.#註釋號只能放在句首,不能放在句尾;
3.不須要重啓Apache,當即生效;html

相關文章
相關標籤/搜索