Mod_Rewrite其實就是大家常說的偽靜態了,下面我來介紹apache中怎么打開偽靜態功能與怎么利用.htaccess來實現重寫url。
首先確認你已經開啟服務器的路由重寫模塊,如果不確認,請在httpd.conf文件中查找如下代碼,并將前面的#符號刪除,重啟服務器,即開啟了重寫模塊
第一步:找到apache的配置文件httpd.conf(文件在conf目錄下)
第二步:你首先必須得讓服務器支持mod_rewrite,如果你使用的是虛擬主機,請事先詢問你的主機提供商。
打開httpd.conf,找到 #LoadModule rewrite_module modules/mod_rewrite.so 把#去掉。
找到AllowOverride None 改成 AllowOverride All。
注:AllowOverride 的參數設置為ALL,表示整臺服務器上都支持URL規則重寫。Apache 服務器要讀每個網站下目錄下的 .htaccess 文件。如果沒有這個文件,或者這個文檔沒有定義任何關于URL重寫的規則就不會有任何效果。
對于不同的網址,需要在APACHE中增加如下內容:
- <Directory “E:/Apache Group/Apache2/htdocs/leapsoul”>
- /*引號里代表你的web存放目錄*/
- /*如果是Linux,只要你定位到你網站目錄即可*/ Options FollowSymLinks AllowOverride None
- </Directory>
第三步:重啟apache服務器,先按stop再start。
第四步:在你需要URL重寫的網站目錄下放一個.htaccess文件,文件名是.htaccess,Windiws下不能直接建立,你可以用記事本另存為。
注:我測試的時候在每個需要偽靜態的目錄下都存放了對應的.htaccess文件,同時在httpd.conf文件中像第二步那樣對相關的目錄添加了相應的<Directory>..</Directory>代碼。
第五步:在.htaccess中通過正則表達式映射需要偽靜態的頁面。然后在你的網站配置中加入下面代碼:
- RewriteEngine on
- RewriteRule index.html index.php
- RewriteRule (d+).html$ info.php?infoid=$1
然后重啟apache現在我們就可以如:
.htaccess做法
.htaccess文件,添加如下代碼
- # rewrite規則
- RewriteEngine on
- RewriteCond %{REQUEST_FILENAME} !-f#這里將除了實際文件以為的所有其他請求都指向下行代碼給出的腳本,這里是index.php
- RewriteRule .* index.php
在windows下無法直接創建 .htaccess文件,請注意前面有“點號”
很奇怪,在 Windows 資源管理器里面不允許你建立 .htaccess 這樣只有擴展名的文件。所以你必須先將文件保存為其他名字,例如 app.htaccess。然后進入命令行窗口(通過開始菜單運行 cmd.exe 程序即可),輸入 ren a.htaccess .htaccess 命令來對文件改名。或者新建一個記事本,另存為.htaccess 即可
新聞熱點
疑難解答