apache 重寫和虛擬目錄配置

要求:

假如我請求一個地址:www.lxy.com/news-sport-id123.html

轉成:www.lxy.com/show.php?cate=news&class=sport&id=123


步驟:

首先我們需要在apache中啓用rewrite模塊

打開apachehttpd.conf文件,找到#LoadModule rewrite_module modules/mod_rewrite.so,將前面的‘#’去掉。

創建虛擬目錄

<VirtualHost *:80>

   #網站域名

  ServerName www.lxy.com  

   #網站根目錄

  DocumentRoot "E:/web/lxy/"


   #設置網站目錄的權限

  <Directory "E:/web/lxy/">


   #設置順序,如下規則的意思是首先允許所有訪問但是拒絕1.1.1.1這個ip訪問這個剛開始把我弄暈了

  Order allow,deny

Allowfrom All

  Deny from 1.1.1.1


  #options選項設置網站是否可以列出文件列表,網站正式上線後除了有特殊需求否則都不允許列出文件列表,但是需要特別注意的是如果開啓apacherewrite後,options的參數必須爲+indexes

   #允許列出文件列表

  Options +Indexes

   #不允許列出文件列表的選項爲 Options +Indexes


   #設置歡迎頁面

DirectoryIndex  11.php


   #如果匹配不到,可以指定一個錯誤頁

errorDocument404 /404.php



   #可以把Allowoverride這個啓動,然後把重寫規則放到 .htaccess,也可以直接放在虛擬主機中配置

  #Allowoverride All

  RewriteEngine On

   #重寫規則

  #RewriteRule news-id(\d+)\.html$ show.php?id=$1

  RewriteRule ^([a-zA-Z]+)-([a-zA-Z]+)-id(\d+)\.html$show.php?cat=$1&class=$2&id=$3


  </Directory>

</VirtualHost>


.下面我寫一個show.php的文件,內容主要爲打印出接收到的參數即可

<?php

  Print_r($_SERVER);

?>


接下來我們來訪問以下即可

wKiom1MxQFaRmw-CAAGbaKxwalM043.jpg




我們也可以把重新規則寫入.htaccess文件中,將.htaccess文件放到網站根目錄 或者 需要執行的PHP文件所在的文件夾下。然後將 Allowoverride All添加到虛擬目錄的配置選擇中去,在.htaccess文件中添加重寫規則即可。

  1. #創建一個Rewrite Engine (URL重寫工具)

  2. RewriteEngine On  

  3. #定重寫規則: 主要使用正則表達式

  4. RewriteRule  ^([a-zA-Z]+)-([a-zA-Z]+)-id(\d+)\.html$ show.php?cat=$1&class=$2&id=$3

    效果跟將重寫規則寫在配置文件中是一樣的。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章