htaccess偽靜態規則
.htaccess文件提供了針對目錄改變配置的方法, 是apache服務器中的一個配置文件,它負責相關目錄下的網頁配置。通過htaccess文件,可以幫我們實現:網頁301重定向、自定義404錯誤頁面、改變文件擴展名、允許/阻止特定的用戶或者目錄的訪問、禁止目錄列表、配置默認文檔等功能。
偽靜態實際上是利用PHP把當前地址解析成另外一種方法進行訪問網站!要學偽靜態規則的寫法,你必須得懂一點正則。
一、正則表達式教程
簡單羅列如下:
.???換行符以外的所有字符 w?匹配字母或數字或下劃線或漢字 s?匹配任意的空白符 d?匹配數字 b?匹配單詞的開始或結束 ^?匹配字符串的開始 $?匹配字符串的結束 *?重復零次或更多次 +?重復一次或更多次 ??重復零次或一次 {n}?重復n次 {n,}重復n次或更多次 {n,m}?重復n到m次
二、常見的.htaccess應用舉例
1 防止盜鏈,如果來得要訪問jpe jpg bmp png結尾的url 用戶不是來自我們的網站,那么讓他看一張我們網站的展示圖片。
RewriteEngine?On RewriteCond?%{HTTP_REFERER}?!^http://(.+.)?mysite.com/?[NC]RewriteCond?%{HTTP_REFERER}?!^$RewriteRule?.*.(jpe?g|gif|bmp|png)$?/images/nohotlink.jpg?[L]
2 網站升級的時候,只有特定IP才能訪問,其他的用戶將看到一個升級頁面
RewriteEngine?on RewriteCond?%{REQUEST_URI}?!/upgrade.html$RewriteCond?%{REMOTE_HOST}?!^24.121.202.30 RewriteRule?$?http://www.linuxidc.com/upgrade.html?[R=302,L]
3 把老的域名轉向新域名
#?redirect?from?old?domain?to?new?domain RewriteEngine?On RewriteRule?^(.*)$http://www.yourdomain.com/$1[R=301,L]
三、常用示例
比如:http://www.yzzmf.com/index.html? -> http://www.yzzmf.com/index.php
RewriteEngine?On RewriteRule?index.html?index.php
比如:http://www.yzzmf.com/test8.html? -> http://www.yzzmf.com/test.php?id=8
RewriteRule?^test([0-9]*).html$?test.php?id=$1
比如:http://www.yzzmf.com/cat-1-3.html -> http://www.yzzmf.com/cat.php?id1=1&id2=3
RewriteRule?^cat-([0-9]+)-([0-9]+).html$?cat.php?id1=$1&id2=$2
比如:http://www.yzzmf.com/cat-zbc2ac-3-5.html -> http://www.yzzmf.com/cat.php?id0=zbc2ac&id1=3&id2=5
RewriteRule?^cat-([a-zA-Z0-9-]*)-([0-9]+)-([0-9]+).html$?cat.php?id0=$1&id1=$2&id2=$3
比如:http://www.yzzmf.com/cat1-4-3-8.html -> http://www.yzzmf.com/cat1.php?id1=4&id2=3&id3=8
RewriteRule?^cat1-([0-9]+)-([0-9]+)-([0-9]+).html$?cat1.php?id1=$1&id2=$2&id3=$3
比如:http://www.yzzmf.com/cat5/ -> http://www.yzzmf.com/cat.php?id1=5
RewriteRule?^cat([0-9]*)/$?cat.php?id1=$1
比如:http://www.yzzmf.com/catm6/3/ -> http://www.yzzmf.com/catm.php?id1=6&id2=3
RewriteRule?^catm([0-9]*)/([0-9]*)/$?catm.php?id1=$1&id2=$2
希望對大家有所幫助!
推薦教程:apache教程