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;
}


匿名
引用
...
匿名 留名
搞出来啦
1