apache 重写和虚拟目录配置
要求:
假如我請求一個地址: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
效果跟將重寫規則寫在配置文件中是一樣的。
轉載于:https://blog.51cto.com/wangyueheng88/1383911
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的apache 重写和虚拟目录配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: svn怎么上传文件 — 百度经验无耻推广
- 下一篇: 【pl/sql番外篇】 存储过程 游标