目前的状况是,我的一个公司网站,在国内支持静态化的Windows主机上不需要任何配置便能完美支持,具体地址(国内某Windows主机):http://linlin.cor.com.cn/en/News.php点里面任何一条NEW新闻,可通过伪静态正常访问,具体URL形式类似:http://linlin.cor.com.cn/en/news.view.php/page-1-id-31.html这样。最近为了国外访问迅速,换到Linux服务器,问题就来了。默认什么都不配置的情况下便出现该页无法显示,主机商亦不知如何写这个.htaccess,若有能解决者,送可绑独立域名并含Cpanel平台管理权限的Linux虚拟主机一个!我的QQ6358921

解决方案 »

  1.   

    你要先给出你原先动态链接的格式:
    比如:http://linlin.cor.com.cn/en/News.php?page=1&id=31
    那么要转换成如下链接
    http://linlin.cor.com.cn/en/news.view.php/page-1-id-31.html就可以用如下内容的htaccess#ErrorDocument 404 /<IfModule mod_rewrite.c>
    RewriteEngine on
    Options +FollowSymlinks
    RewriteBase /RewriteRule ^news.view.php/page-(.+)-id-(.+).html News.php?page=$1&id=$2</IfModule>
      

  2.   

    非常感谢! 现在已经不提示错误了,只是点新闻没有反应.我看不到原先的动态格式,因为网站是找别人写的,通过一个function.rewrite.php来实现静态化,原先并不需要服务器配置的.我刚刚把相关的4个php页面源码上传了,地址是http://linlin.cor.com.cn/en/htdocs.rar能麻烦您帮忙看下么?谢谢!另外我的承诺一定会兑现的!
      

  3.   

    你先把
    #ErrorDocument 404 / 
    这行
    该成
    ErrorDocument 404 / 也就是前面的#去掉,应该可以看到一个错误页面,说明映射关系有问题,你说的rar我分析一下先呵呵,冲着你的承诺来的哈~~
      

  4.   

    我试了http://linlin.cor.com.cn/en/News.php,已经可以显示对应的新闻了呀
      

  5.   

    根据你的描述应该是linux主机上获取PATH_INFO出问题,一个方案你可以先试下:
    在news.php里增加以下两个函数:-------------------------------------------------
    function _getScriptPath(){
      $filename = basename($_SERVER['SCRIPT_FILENAME']);
            if (basename($_SERVER['SCRIPT_NAME']) === $filename) {
                $baseScript = $_SERVER['SCRIPT_NAME'];
            } elseif (basename($_SERVER['PHP_SELF']) === $filename) {
                $baseScript = $_SERVER['PHP_SELF'];
            } elseif (isset($_SERVER['ORIG_SCRIPT_NAME']) && basename($_SERVER['ORIG_SCRIPT_NAME']) === $filename) {
                $baseScript = $_SERVER['ORIG_SCRIPT_NAME']; // 1and1 shared hosting compatibility
            } else {
                $path    = $_SERVER['PHP_SELF'];
                $segs    = explode('/', trim($_SERVER['SCRIPT_FILENAME'], '/'));
                $segs    = array_reverse($segs);
                $index   = 0;
                $last    = count($segs);
                $baseScript = '';
                do {
                    $seg     = $segs[$index];
                    $baseScript = '/' . $seg . $baseScript;
                    ++$index;
                } while (($last > $index) && (false !== ($pos = strpos($path, $baseScript))) && (0 != $pos));
            }
      return $baseScript;
    }function parsePathInfo(){
       if ( ! isset($_SERVER['PATH_INFO']) || $_SERVER['PATH_INFO'] == ''){
                $strlen = strlen(_getScriptPath());
                $totallen = strlen($_SERVER['PHP_SELF']);
            return substr($_SERVER['PHP_SELF'],$strlen,$totallen);
            }else{
              return $_SERVER['PATH_INFO'];
            }
    }
    -------------------------------------------------然后把news.php的第13行:
    $path_info=$_SERVER["PATH_INFO"];
    改为
    $path_info=parsePathInfo();
    再试试吧,我白天只能访问csdn,之外的网络都访问不到的
      

  6.   


    这台是之前运行正常的Windows服务器,我刚才修改了htaccess,没有看到你说的错误,点击新闻链接会跳到主页,而里面的图片路径全部错误。第二个方案目前正在试,你如果方便的话加我QQ 1272298127 我把Linux上正在调试的网站发给你