本人刚学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
显示网页不存在,请问是不是还需要哪里配置一下,希望能给详细答复,谢谢。

解决方案 »

  1.   

    <?php
    // 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
    ?> 
      

  2.   


      謝謝你,想請教下,我是否還需要做些配置才可以實現,因為我把以上代碼保存成test.php文件後,輸入localhost/php100/test.php?id|1@action|2訪問,提示說頁面不存在,我想是不是需要做些url轉向類的配置。
      

  3.   

    sorry,剛才是我搞錯了,你的代碼是可以用的,我還有個疑問,就是偽靜態一本是需要把?去掉的,您的程序裡還是保留的,這樣算不算是實現偽靜態??請多指教。
      

  4.   

    謝謝,我主要的疑問就是,PHP偽靜態是否能夠完全靠PHP代碼實現,而不做其它任何設置。
      

  5.   

    这不是真正的伪静态……   还是很容易识别的有没有对搜索引擎更友好,不知道
    如果想伪静态,你稍微了解下Apache的rewrite规则,,比花时间在这里合算比如
    RewriteRule ^index\.html$    index\.php [L]
    这条规则,就是当访问http://domain/index.html,实际上是根目录下那个index.php文件