今天看到一個哥們的帖子發了個rewrite的帖子,之前也寫過一個,配置挺簡單的,但當時沒注意這個問題,當時沒有用到.htaccess文件,在機子上測試了一下,發現確實無法用,因而開始找問題的所在。php
本身從頭搭建了一下:apache
mod_Rewrite
模塊。編輯器
簡單方法
echo phpinfo();
看apache的mod裏有沒有分佈式
rewrite
若是有跳過此步
Apache 1.x 的用戶請檢查 conf/httpd.conf 中是否存在以下兩段代碼:ide
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)。網站
找到code
<IfModule mod_Rewrite.c> </IfModule>
沒有的本身添加,而後之間寫入你的rewrite規則,例如:htm
<IfModule mod_Rewrite.c> RewriteEngine On RewriteRule ^test.htm$ test.php </IfModule>
3.此時請務必注意,若是網站使用經過虛擬主機來定義,請務必加到虛擬主機配置,即 <VirtualHost> 中去,若是加在虛擬主機配置外部將可能沒法使用,重啓apache,rewrite配置就完了。教程
4.讓apache支持.htaccess
把
<IfModule mod_Rewrite.c>
裏的代碼刪除掉
找到
複製代碼
<Directory /> Options FollowSymLinks AllowOverride None </Directory>
複製代碼 把裏邊的
AllowOverride None
改成
Allow Override All
這樣.htaccess文件才能啓用。
5.建立一個.htaccess文件,win下能夠用notepad++之類的編輯器建(記事本不行),要是嫌麻煩此文檔附件中有,放在項目目錄下,而後在裏邊寫上本身的規則。
RewriteEngine on Rewriterule ^test.htm$ test.php
6.重啓apache就好了
7.通常的apache以上配置就好了,但個人還不行,因此研究了一下apache的配置文件發現了這樣一個參數:
AccessFileName access.ht
意思是;AccessFileName定義每一個目錄下的訪問控制文件的文件名,缺省爲.htaccess (大多數人直接就是.htaccess,因此好多網上教程都沒寫這步,而個人是access.ht),能夠經過更改這個文件,來改變不一樣目錄的訪問控制限制。
將之改成
AccessFileName .htaccess
8.重啓apache就好了。
題外:.htaccess位置問題:htaccess文件(或者"分佈式配置文件")提供了針對每一個目錄改變配置的方法,即在一個特定的目錄中放置一個包含指令的文件,其中的指令做用於此目錄及其全部子目錄。(每個文件夾下均可以有個.htaccess文件)