PHP全能路由
目前市面上的程序(WordPress、Typecho、Zblog)都是由用户填写网站目录,没有自动适应。比如一个网站绑定多个域名,让每个域名都可以自动匹配。或者更换域名,不用像WP那样还得去数据库修改。
这几行路由可以全自动匹配脚本根目录、网站根目录(伪静态+非伪静态)、请求路径、请求参数。
【演示】
主页:http://demo.freevar.com/route/
无伪静态:http://demo.freevar.com/route/index.php/dsfsdfd?a=1&b=2
有伪静态:http://demo.freevar.com/route/dsfsdfd?a=1&b=2
【代码】
<?php define('wenjiangenmulu',substr($_SERVER['SCRIPT_NAME'],0,strripos($_SERVER['SCRIPT_NAME'],'/')+1)); define('wangzhangenmulu',(stripos($_SERVER['REQUEST_URI'],$_SERVER['SCRIPT_NAME'])===0)?$_SERVER['SCRIPT_NAME'].'/':wenjiangenmulu); define('qingqiulujing',substr(stristr($_SERVER['REQUEST_URI'],'?',true)?:$_SERVER['REQUEST_URI'],strlen(wangzhangenmulu))); echo ' <!DOCTYPE HTML> <html> <head> <meta charset="utf-8" /> <title>全能路由</title> </head> <body> <b>全能路由</b><br /> [文件根目录] '.wenjiangenmulu.'<br /> [网站根目录] '.wangzhangenmulu.'<br /> [请求路径] '.qingqiulujing.'<br /> [请求参数] <br /> '; print_r($_GET); echo ' <br /> [服务器] <br /> '; print_r($_SERVER); echo ' <br /> </body> </html> '; ?>
【服务器重写配置】
Apache:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^route/(.*)$ /route/index.php
Nginx:
location /route {
try_files $uri $uri/ /route/index.php?$args;
}