apache配置rewrite及.htaccess文件

apache配置rewrite及.htaccess文件

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

本身從頭搭建了一下:apache

  1. 首先肯定您使用的 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)。網站

  1. 配置Apache配置文件httpd.conf實現rewrite

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

相關文章
相關標籤/搜索