僞靜態的做用:1.讓url更加美觀。2.對搜索引擎更加友好。php
php處理僞靜態案例分析(path_info模式)html
備註:nginx服務器默認下是不支持path_info模式的,須要去配置nginx
經過正則表達式去分析僞靜態url的特性,很簡單,直接上代碼web
<?php //匹配這個url地址 /index.php/2/1.html if(preg_match('/(\d+)\/(\d+)\.html/', $_SERVER['PAHT_INFO'],$arr)){ $type = $arr[1]; $category_id = $arr[2]; //一些業務邏輯處理 好比查詢數據庫 }else{ //一些業務邏輯處理 } ?>
Apache下配置rewrite方法正則表達式
1.虛擬域名的配置 數據庫
2.httpd_vhost.conf設置
apache
虛擬域名的配置windows
1. httpd.conf 文件開啓相關模式
服務器
去掉一下兩句以前的 #
性能
LoadModule rewrite_module modules/mod_rewrite.so
Include conf/extra/httpd-vhosts.conf
2. 打開/extra/httpd_vhost.conf文件,在裏面配置相關域名和僞靜態規則
<VirtualHost *:80>(這裏能夠指定ip)
ServerAdmin webmaster@dummy-host2.example.com
DocumentRoot "D:\ai\Program Files\phpStudy\WWW\demo"(這裏指定路徑)
ServerName www.demo.com (這裏指定域名)
ErrorLog "logs/dummy-host2.example.com-error.log"
CustomLog "logs/dummy-host2.example.com-access.log" common
RewriteEngine on (開啓僞靜態引擎)
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME}!-d
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME}!-f
(上面的這兩句是說,若是訪問的url路徑有真實存在的靜態頁面,就加載該靜態頁面,若是不存在就執行僞靜態。固然,若是但願無論有沒有頁面,都要執行僞靜態的話,就把上面兩句刪了就好)
RewriteCond ^/detail/([0-9]+)$ /detail.php?id=$1 (配置僞靜態路徑)
</VirtualHost>
3. 修改 c:windows/system32/drivers/etc/hosts
添加 127.0.0.1 www.demo.com
這樣apache下rewrite配置,就妥妥搞定了。
nginx下rewrite配置方法
找到配置文件 cd /etc/nginx/conf.d
找到對應頁面的配置文件,編輯它
……
if(!-$request_filename){
rewrite ^/detail/(\d+).html$ /detail.php?id=$1 last;
break;
}
……
這樣就能夠了。by the way,僞靜態配置的太多,也是會影響服務器的性能的。