php 伪静态

blizzf99 2010-07-26 10:29:14
本人刚学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
显示网页不存在,请问是不是还需要哪里配置一下,希望能给详细答复,谢谢。
...全文
95 点赞 收藏 10
写回复
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
blizzf99 2010-07-27
謝謝大家
回复
YHL27 2010-07-27
学习。。。。
回复
美人心计1999 2010-07-27
[Quote=引用 6 楼 amani11 的回复:]
这不是真正的伪静态…… 还是很容易识别的

有没有对搜索引擎更友好,不知道


如果想伪静态,你稍微了解下Apache的rewrite规则,,比花时间在这里合算

比如
RewriteRule ^index\.html$ index\.php [L]
这条规则,就是当访问http://domain/index.html,实际上是根目录下那个index.php文件
[/Quote]
顶.................
回复
amani11 2010-07-27
这不是真正的伪静态…… 还是很容易识别的

有没有对搜索引擎更友好,不知道


如果想伪静态,你稍微了解下Apache的rewrite规则,,比花时间在这里合算

比如
RewriteRule ^index\.html$ index\.php [L]
这条规则,就是当访问http://domain/index.html,实际上是根目录下那个index.php文件
回复
blizzf99 2010-07-27
[Quote=引用 3 楼 xujian2009 的回复:]
学习了,还是用Apache和PHP好吧。
[/Quote]
謝謝,我主要的疑問就是,PHP偽靜態是否能夠完全靠PHP代碼實現,而不做其它任何設置。
回复
blizzf99 2010-07-27
[Quote=引用 2 楼 blizzf99 的回复:]
引用 1 楼 cunningboy 的回复:
PHP code
<?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
$P……
[/Quote]
sorry,剛才是我搞錯了,你的代碼是可以用的,我還有個疑問,就是偽靜態一本是需要把?去掉的,您的程序裡還是保留的,這樣算不算是實現偽靜態??請多指教。
回复
xujian2009 2010-07-27
学习了,还是用Apache和PHP好吧。
回复
blizzf99 2010-07-27
[Quote=引用 1 楼 cunningboy 的回复:]
PHP code
<?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_……
[/Quote]

謝謝你,想請教下,我是否還需要做些配置才可以實現,因為我把以上代碼保存成test.php文件後,輸入localhost/php100/test.php?id|1@action|2訪問,提示說頁面不存在,我想是不是需要做些url轉向類的配置。
回复
CunningBoy 2010-07-27
<?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
?>
回复
发动态
发帖子
基础编程
创建于2007-09-28

2.1w+

社区成员

从PHP安装配置,PHP入门,PHP基础到PHP应用
申请成为版主
社区公告
暂无公告