.htaccess是乙個完整的檔名(只有字尾),它是用於apache伺服器下的配置檔案,當.htaccess檔案放在某一資料夾下,它僅對該資料夾下的檔案和資料夾有效。通過.htaccess檔案,可以配置伺服器實現很多功能,比如錯誤定位,密碼保護,ip拒絕,url重寫等等。
預設的apache不支援.htaccess,需要修改apache的配置檔案httpd.conf,才能使得.htaccess有效。
配置方法:
配置方面:
1. 找到apache的安裝目錄下的conf下的httpd.conf檔案,開啟檔案修改
loadmodule rewrite_module modules/mod_rewrite.so這行**,他前面有個#號,把#號刪掉
2. 找到
options followsymlinks execcgi indexes
allowoverride none
order deny,allow
deny from all
satisfy all
這個節點,把none改為all.節點可能有多個,修改和php路徑相關的那個。
3. 重啟apache服務
接下來是建立.htaccess檔案,並在裡面寫配置。windows中新建檔案的時候,不允許檔案只有字尾,可以採用notepad等工具新建另存為該檔名。
如果要實現url重寫,配置檔案中採用正規表示式是編寫url,並使之和常規的php檔案對映。常用的寫法如下:
rewriteengine on //on為開啟,off為關閉
rewriterule ([a-za-z])-([0-9]).html$ b.php?action=$1&id=$2
rewriterule ([a-za-z1-9])/([a-za-z1-9])$ a.php?controller=$1&action=$2
rewriterule mycontroller/[a-za-z1-9]$ mycontroller.php?action=$1
errordocument 404 /404.txt
網上找了一篇檔案例舉了常用的5種對映,也可以參考。
示例:
.htaccess檔案內容如下
rewriteengine on //on為開啟,off為關閉
rewriterule ^([a-za-z1-9])/([a-za-z1-9])$ a.php?controller=$1&action=$2
rewriterule ^([a-za-z1-9])/([a-za-z1-9])/$ a.php?controller=$1&action=$2
說明:
正規表示式,嚴格匹配類似controller/action或者controller/action/,對映到a.php
a.php內容
<?php
echo "你的controller:".$_get['controller']."
"; echo "你的action:".$_get['action'];
?>
輸入http://localhost:8080/controller/action/
則被解析到http://localhost:8080/a.php?controller=controller&action=action
這2個url是等價的。
注意,在對映url後加上查詢字串不影響正常的對映,比如輸入http://localhost:8080/controller/action/?value=100,也是可以的。
Nginx實現URL重寫
本文利用nginx實現url重寫,本文使用nginx與靜態頁面配合重寫url。結合本文場景,需要安裝nginx。url重寫是指將乙個url請求重新寫成 可以處理的另乙個url的過程。這樣說可能不是很好理解,舉個例子來說明一下,在開發中可能經常遇到這樣的需求,比如通過瀏覽器請求的http localh...
Nginx實現URL重寫
本文利用nginx實現url重寫,本文使用nginx與靜態頁面配合重寫url。結合本文場景,需要安裝nginx。1.1 關於linux系統安裝nginx可以參考我的文章 傳送門 url重寫是指將乙個url請求重新寫成 可以處理的另乙個url的過程。這樣說可能不是很好理解,舉個例子來說明一下,在開發中...
使用HttpHandler實現URL重寫
本文所講的是使用asp.net中的httphandler實現url重寫的,它所實現的原理請看這裡,本程式可以處理任何url,因為我在程式中使用了url過慮,只有訪問檔名是數字的才進行處理,並指在內部執行乙個新的頁面,並輸出資料,如下 當然你首先要做的是先建乙個類,並繼承自ihttphandler,然...