要求:
假如我請求一個地址:www.lxy.com/news-sport-id123.html
轉成:www.lxy.com/show.php?cate=news&class=sport&id=123
步驟:
①首先我們需要在apache中啓用rewrite模塊
打開apache的httpd.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選項設置網站是否可以列出文件列表,網站正式上線後除了有特殊需求否則都不允許列出文件列表,但是需要特別注意的是如果開啓apache的rewrite後,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);
?>
接下來我們來訪問以下即可
我們也可以把重新規則寫入.htaccess文件中,將.htaccess文件放到網站根目錄 或者 需要執行的PHP文件所在的文件夾下。然後將 Allowoverride All添加到虛擬目錄的配置選擇中去,在.htaccess文件中添加重寫規則即可。
#創建一個Rewrite Engine (URL重寫工具)
RewriteEngine On
#定重寫規則: 主要使用正則表達式
RewriteRule ^([a-zA-Z]+)-([a-zA-Z]+)-id(\d+)\.html$ show.php?cat=$1&class=$2&id=$3
效果跟將重寫規則寫在配置文件中是一樣的。