今天看到一個(gè)哥們的帖子發(fā)了個(gè)rewrite的帖子,以前也寫過一個(gè),配置挺簡單的,但當(dāng)時(shí)沒注意這個(gè)問題,當(dāng)時(shí)沒有用到.htaccess文件,在機(jī)子上測試了一下,發(fā)現(xiàn)確實(shí)沒法用,于是開始找問題的所在。
創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括元謀網(wǎng)站建設(shè)、元謀網(wǎng)站制作、元謀網(wǎng)頁制作以及元謀網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,元謀網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到元謀省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!自己從頭搭建了一下:
首先確定您使用的 Apache 版本,及是否加載了mod_Rewrite
模塊。
簡單方法
echo phpinfo();
看apache的mod里有沒有
rewrite
如果有跳過此步
Apache 1.x 的用戶請檢查 conf/httpd.conf 中是否存在如下兩段代碼:
LoadModule Rewrite_module libexec/mod_Rewrite.so
AddModule mod_Rewrite.c
Apache 2.x 的用戶請檢查 conf/httpd.conf 中是否存在如下一段代碼:
LoadModule Rewrite_module modules/mod_Rewrite.so
注: 這里輸入引用文本:如果前面有#,將其去掉。并且保證你的apache文件里有mod_Rewrite.so文件(1.X版的要有mod_Rewrite.c)。
配置Apache配置文件httpd.conf實(shí)現(xiàn)rewrite找到
沒有的自己添加,然后之間寫入你的rewrite規(guī)則,例如:
3.此時(shí)請務(wù)必注意,如果網(wǎng)站使用通過虛擬主機(jī)來定義,請務(wù)必加到虛擬主機(jī)配置,即
4.讓apache支持.htaccess
把
里的代碼刪除掉
找到
復(fù)制代碼
復(fù)制代碼 把里邊的
AllowOverride None
改為
Allow Override All
這樣.htaccess文件才能啟用。
5.創(chuàng)建一個(gè).htaccess文件,win下可以用notepad++之類的編輯器建(記事本不行),要是嫌麻煩此文檔附件中有,放在項(xiàng)目目錄下,然后在里邊寫上自己的規(guī)則。
RewriteEngine on Rewriterule ^test.htm$ test.php
6.重啟apache就行了
7.一般的apache以上配置就行了,但我的還不行,所以研究了一下apache的配置文件發(fā)現(xiàn)了這樣一個(gè)參數(shù):
AccessFileName access.ht
意思是;AccessFileName定義每個(gè)目錄下的訪問控制文件的文件名,缺省為.htaccess (大多數(shù)人直接就是.htaccess,所以好多網(wǎng)上教程都沒寫這步,而我的是access.ht),可以通過更改這個(gè)文件,來改變不同目錄的訪問控制限制。
將之改為
AccessFileName .htaccess
8.重啟apache就行了。
題外:.htaccess位置問題:htaccess文件(或者"分布式配置文件")提供了針對每個(gè)目錄改變配置的方法,即在一個(gè)特定的目錄中放置一個(gè)包含指令的文件,其中的指令作用于此目錄及其所有子目錄。(每一個(gè)文件夾下都可以有個(gè).htaccess文件)