我的博客使用的是虚拟主机,也想实现url优化,但是我没有服务器权限,怎么办?
很简单,我们可以从$_SERVER[”REQUEST_URI”]和$_SERVER['PATH_INFO']来下手:
原网站访问地址是 http://www.phpweblog.net/test.php?a=1&b=2&c=3
使用了 mode_rewrite 函数后,就可以用 http://www.phpweblog.net/test.php/a/1/b/2/c/3来访问了,而且程序基本不用修改.
function
mod_rewrite(){
if ( isset ( $_SERVER [ ' PATH_INFO ' ])){
$url = substr ( $_SERVER [ ' PATH_INFO ' ] , 1 );
$url = explode ( ' / ' , $url );
foreach ( $url as $key => $value ){
if ( $key % 2 != 1 ){
if ( $value != '' ) $_GET [ $value ] = $url [ $key + 1 ];
$querystring [] = $value . ' = ' . $url [ $key + 1 ];
}
}
$_SERVER [ ' QUERY_STRING ' ] = implode ( " & " , $querystring );
$_SERVER [ ' PHP_SELF ' ] = substr ( $_SERVER [ ' PHP_SELF ' ] , 0 , strpos ( $_SERVER [ ' PHP_SELF ' ] , ' .php ' ) + 4 );
$_SERVER [ ' REQUEST_URI ' ] = $_SERVER [ ' PHP_SELF ' ] . ' ? ' . $_SERVER [ ' QUERY_STRING ' ];
}
}
mod_rewrite();
http : // www.phpweblog.net/test.php/a/1/b/2/c/3
echo ' <pre> ' ;
echo " GET数组如下:<br /> " ;
print_r ( $_GET );
Array
(
[a] => 1
[b] => 2
[c] => 3
)
if ( isset ( $_SERVER [ ' PATH_INFO ' ])){
$url = substr ( $_SERVER [ ' PATH_INFO ' ] , 1 );
$url = explode ( ' / ' , $url );
foreach ( $url as $key => $value ){
if ( $key % 2 != 1 ){
if ( $value != '' ) $_GET [ $value ] = $url [ $key + 1 ];
$querystring [] = $value . ' = ' . $url [ $key + 1 ];
}
}
$_SERVER [ ' QUERY_STRING ' ] = implode ( " & " , $querystring );
$_SERVER [ ' PHP_SELF ' ] = substr ( $_SERVER [ ' PHP_SELF ' ] , 0 , strpos ( $_SERVER [ ' PHP_SELF ' ] , ' .php ' ) + 4 );
$_SERVER [ ' REQUEST_URI ' ] = $_SERVER [ ' PHP_SELF ' ] . ' ? ' . $_SERVER [ ' QUERY_STRING ' ];
}
}
mod_rewrite();
http : // www.phpweblog.net/test.php/a/1/b/2/c/3
echo ' <pre> ' ;
echo " GET数组如下:<br /> " ;
print_r ( $_GET );
Array
(
[a] => 1
[b] => 2
[c] => 3
)