本人刚学PHP,最近在研究伪静态,环境是IIS+PHP5
在网上看到一篇帖子说不用配制apache服务器,实现php的伪静态. 如下:在你的程序初始化时使用如下代码:
aa.php:
<?php
$Php2Html_FileUrl = urldecode($_SERVER["REQUEST_URI"]);//得到/aa.php/action|personal@id|43
$Php2Html_UrlString = str_replace("/", "", strrchr($Php2Html_FileUrl, "/"));//得到action|personal@id|43
$Php2Html_UrlQueryStrList = explode("@", $Php2Html_UrlString);//分别把action|personal和id|43放到数组中
foreach($Php2Html_UrlQueryStrList as $Php2Html_UrlQueryStr)
{
$Php2Html_TmpArray = explode("|", $Php2Html_UrlQueryStr);
$_GET[$Php2Html_TmpArray[0]] = $Php2Html_TmpArray[1];//放到GET中
}
echo '假静态:$_GET变量<br />';
echo "<pre>";
print_r($_GET);
?>
在地址栏中输入http://localhost/aa.php/action|personal@id|43
页面显示:
假静态:$_GET变量
Array( [action] => personal [id] => 43)然后php中调用$_GET变量就像平常一样了。
连接使用方式:
.php/action|personal@id|43和
.php?action=personal&id=43一样。
网站其他的文件如果想实现伪静态的话,就把aa.php文件引入就可以了.
可我照着做了,地址栏输入http://localhost/aa.php/action|personal@id|43
显示网页不存在,请问是不是还需要哪里配置一下,希望能给详细答复,谢谢。
在网上看到一篇帖子说不用配制apache服务器,实现php的伪静态. 如下:在你的程序初始化时使用如下代码:
aa.php:
<?php
$Php2Html_FileUrl = urldecode($_SERVER["REQUEST_URI"]);//得到/aa.php/action|personal@id|43
$Php2Html_UrlString = str_replace("/", "", strrchr($Php2Html_FileUrl, "/"));//得到action|personal@id|43
$Php2Html_UrlQueryStrList = explode("@", $Php2Html_UrlString);//分别把action|personal和id|43放到数组中
foreach($Php2Html_UrlQueryStrList as $Php2Html_UrlQueryStr)
{
$Php2Html_TmpArray = explode("|", $Php2Html_UrlQueryStr);
$_GET[$Php2Html_TmpArray[0]] = $Php2Html_TmpArray[1];//放到GET中
}
echo '假静态:$_GET变量<br />';
echo "<pre>";
print_r($_GET);
?>
在地址栏中输入http://localhost/aa.php/action|personal@id|43
页面显示:
假静态:$_GET变量
Array( [action] => personal [id] => 43)然后php中调用$_GET变量就像平常一样了。
连接使用方式:
.php/action|personal@id|43和
.php?action=personal&id=43一样。
网站其他的文件如果想实现伪静态的话,就把aa.php文件引入就可以了.
可我照着做了,地址栏输入http://localhost/aa.php/action|personal@id|43
显示网页不存在,请问是不是还需要哪里配置一下,希望能给详细答复,谢谢。
// localhost/php100/test.php?id|1@action|2
$Php2Html_FileUrl = $_SERVER["REQUEST_URI"];
echo $Php2Html_FileUrl."<br>";
// /php100/test.php?id|1@action|2
$Php2Html_UrlString = str_replace("?","",str_replace("/", "", strrchr(strrchr($Php2Html_FileUrl, "/"),"?")));
echo $Php2Html_UrlString."<br>";
// id|1@action|2
$Php2Html_UrlQueryStrList = explode("@", $Php2Html_UrlString);
print_r($Php2Html_UrlQueryStrList);
// Array ( [0] => id|1 [1] => action|2 )
echo "<br>";
foreach($Php2Html_UrlQueryStrList as $Php2Html_UrlQueryStr){
$Php2Html_TmpArray = explode("|", $Php2Html_UrlQueryStr);
print_r($Php2Html_TmpArray);
// Array ( [0] => id [1] => 1 ) ; Array ( [0] => action [1] => 2 )
echo "<br>";
$_GET[$Php2Html_TmpArray[0]] = $Php2Html_TmpArray[1];
}
//echo '假静态:$_GET变量<br />';
print_r($_GET); // Array ( [id|1@action|2] => [id] => 1 [action] => 2 )
echo "<br>";
echo "<hr>";
echo $_GET[id]."<br>";
// 1 echo $_GET[action];// 2
?>
謝謝你,想請教下,我是否還需要做些配置才可以實現,因為我把以上代碼保存成test.php文件後,輸入localhost/php100/test.php?id|1@action|2訪問,提示說頁面不存在,我想是不是需要做些url轉向類的配置。
如果想伪静态,你稍微了解下Apache的rewrite规则,,比花时间在这里合算比如
RewriteRule ^index\.html$ index\.php [L]
这条规则,就是当访问http://domain/index.html,实际上是根目录下那个index.php文件