在dev看见过。唠叨应该知道。用PHP写的,好象没用APACHE。

解决方案 »

  1.   

    sports98 发表于 2003-12-5 16:40 PHP ←返回版面          [快速返回] 
     
    今日与同事在闲聊,在传递参数上,他和我说又个论坛使用了xxxx.php/1000/20000
    的传递方式进行了传递,于是就想了想最终写了这个代码
    ----------------------------------------------------
    (由于考虑到有的时候并不能很完善的兼容过来,因此代码兼容了两种传值方式.)用以上所说的方法有个缺点:图片与联接必须使用绝对路径...................
    以下是代码--------------------------------------------------------------------------------
    /******转换代码*********/
    //不包含?设置的参标记 eg. http://localhost/index.php/page=2/ccc=3
    if(!ereg("\\?",$_SERVER[REQUEST_URI]) && ereg("/",$_SERVER[REQUEST_URI])){
    //下面将数据解析入GET数组 
    $newgetarray=ereg_replace("$_SERVER[SCRIPT_NAME]/","",$_SERVER[REQUEST_URI]);
    $newgetarray=ereg_replace("/","&",$newgetarray);
    parse_str($newgetarray,$_GET);
    //不包含‘=’号的参数传递方式 eg. http://localhost/index.php/1/2
    if(!ereg("=",$_SERVER[REQUEST_URI])){
    $keys=array_keys($_GET);
    //本页内接受的参数排列顺序
    $arraylist=array("forumid","threadid");
    for($tempa=0;$tempa<count($keys);$tempa++){
    $_GET[$arraylist][$tempa]]=$keys[$tempa];
    }
    }
    }
    /***************/
     
     
    转贴来了。
      

  2.   

    好象应该是在服务器(APACHE)上设置配置文件,没人用过吗?
      

  3.   

    是 apache 里面配置 RewriteRule 的你自己给出的连接
    http://i18n.linux.net.cn/others/ApacheManual/mod/mod_rewrite.html中,介绍的很详细
      

  4.   

    得把好多 LoadModule 前的 # 去掉,比如:rewrite_module、proxy_module 等,记不清了,总之出什么错就去哪个就成了,参考英文文档中哪个命令对应哪个 module。
    以下是把 http://localhost/iis/ 和 http://localhost/tom/ 转到相应端口的例子:
    (但如果没有最后的斜线是不行的,我不知道怎么解决。现在在用 IIS,它可以完美的转换)ProxyPass /iis/ http://127.0.0.1:80/
    ProxyPassReverse /iis/ http://127.0.0.1:80/
    ProxyPass /tom/ http://127.0.0.1:8080/
    ProxyPassReverse /tom/ http://127.0.0.1:8080/
      

  5.   

    如何在虚拟主机实现
    我的意思是通过编程实现 虚拟主机用户那来的权利去东php.ini、??
      

  6.   

    ini_set()不就可以动php.ini了吗?
      

  7.   

    很简单,只是自行解析参数
    无须对apache服务器进行设置,你或许并无设置的权限。<?php
    /* 此方法仅用于apache服务器 */
    if(isset($_SERVER[PATH_INFO])) //若PATH_INFO可用,注意aoache2默认不可用
      $query_string = $_SERVER[PATH_INFO];
    else {
      $query_string = str_replace($_SERVER[SCRIPT_NAME],"",$_SERVER[PHP_SELF]);
      //或
      $query_string = str_replace($_SERVER[SCRIPT_NAME],"",$_SERVER[REQUEST_URI]);
    }
    if(empty($query_string))
      echo "没有参数";
    else {
      echo "得到的参数串 $query_string<br>";
      $args = split("/",substr($query_string,1)); //分裂成数组
      print_r($args); // 查看得到的参数数组。注意由于传递的参数没有变量名信息,你需要仔细的按位置确定参数的含义
    ?>
      

  8.   

    这样能达到这种效果吗?http://www.chedong.com/phpMan.php?mode=man&parameter=ls
    变成:
    http://www.chedong.com/phpMan.php/man/ls
      

  9.   

    http://www.chedong.com/phpMan.php/man/lsphpMan.php为前述代码,则会显示
    Array (
      [0] => man
      [1] => ls
    )你不测试一下吗?
      

  10.   

    老大,我试了:在本地建一文件demo.php,内容同上,
    然后在浏览器中:
    http://localhost/websamples/demo.php/man/ls
    出错,提示说找不到网页
    然后我又这样试:
    http://localhost/websamples/demo.php?mode=man&parameter=ls
    运行结果如下:
    Array ( [0] => websamples [1] => demo.php ) 
    ========================================================
    是我的方法不对吗?
      

  11.   

    "出错提示说找不到网页"——你是用apache做web服务器的吗?
      

  12.   

    我的是apache1.3.24,取默认设置
    至于apache2应如何设置,在你提供的文档中已经说的很清楚了
      

  13.   

    我不喜欢轻易的去改变默认apache的设置, 因为我觉得这样不利于我的程序移植。 我更愿意用重定向的技术来实现这个需求。