apache配置rewrite及.htaccess文件(轉載)

今天看到一個哥們的帖子發了個rewrite的帖子,之前也寫過一個,配置挺簡單的,但當時沒注意這個問題,當時沒有用到.htaccess文件,在機子上測試了一下,發現確實無法用,因而開始找問題的所在。php

本身從頭搭建了一下:html

1.  首先肯定您使用的 Apache 版本,及是否加載了 mod_Rewrite 模塊。apache

     簡單方法 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 中是否存在以下一段代碼:spa

  LoadModule Rewrite_module modules/mod_Rewrite.socode

  注:若是前面有#,將其去掉。而且保證你的apache文件裏有mod_Rewrite.so文件(1.X版的要有mod_Rewrite.c)。
2.  配置Apache配置文件httpd.conf實現rewrite

找到

 

<IfModule mod_Rewrite.c>

</IfModule>

 

    沒有的本身添加,而後之間寫入你的rewrite規則,例如:

<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文件)

 

轉載自:http://www.cnblogs.com/banruo/archive/2010/11/02/1867536.html

相關文章
相關標籤/搜索