zoukankan      html  css  js  c++  java
  • $_SERVER['URI']

    WordPress通过301重定向实现非首先域(非www)跳转向本来是一个很简单事情,由于没弄清楚$_SERVER['HTTP_X_REWRITE_URL'] 和$_SERVER['REQUEST_URI']的区别导致了循环重定向问题。
    现在来具体研究下$_SERVER['HTTP_X_REWRITE_URL'] 和$_SERVER['REQUEST_URI']的区别
    首先要纠正一部分的观点就是IIS+PHP不支持$_SERVER['REQUEST_URI']
    不是,不支持是PHP Version 版本的问题,php4.4.0不支持 $_SERVER['REQUEST_URI'],php5.2.5则增加了支持;

    $_SERVER['REQUEST_URI']常用来获当前URL
    例如:http://www.hujuntao.com/index.php?p=3
    $_SERVER['REQUEST_URI']获得的就是/index.php?p=3这部分

    $_SERVER["HTTP_X_REWRITE_URL"]则在IIS下获得的是当前URL,在apache下的值为空

    例如:
    当前URL:http://www.hujuntao.com/
    IIS环境下:
    $_SERVER['REQUEST_URI'] = /index.php
    $_SERVER["HTTP_X_REWRITE_URL"] =/
    apache环境下:
    $_SERVER['REQUEST_URI'] = /
    $_SERVER["HTTP_X_REWRITE_URL"] =”

    当前URL:http://www.hujuntao.com/index.php
    IIS环境下:
    $_SERVER['REQUEST_URI'] = /index.php
    $_SERVER["HTTP_X_REWRITE_URL"] =/index.php
    apache环境下:
    $_SERVER['REQUEST_URI'] = /index.php
    $_SERVER["HTTP_X_REWRITE_URL"] =”

    而我需要的就是判断当前URL是否包含/index.php

    由此可见,IIS环境下首先域名重定向用$_SERVER["HTTP_X_REWRITE_URL"]代替$_SERVER['REQUEST_URI'],apache环境则相反。

    function getRequestUri() {
      if (isset($_SERVER['HTTP_X_REWRITE_URL'])) { 
         // check this first so IIS will catch 
         $requestUri = $_SERVER['HTTP_X_REWRITE_URL']; 
       } elseif (isset($_SERVER['REDIRECT_URL'])) { 
         // Check if using mod_rewrite 
         $requestUri = $_SERVER['REDIRECT_URL']; 
       } elseif (isset($_SERVER['REQUEST_URI'])) { 
         $requestUri = $_SERVER['REQUEST_URI']; 
       } elseif (isset($_SERVER['ORIG_PATH_INFO'])) { 
         // IIS 5.0, PHP as CGI 
         $requestUri = $_SERVER['ORIG_PATH_INFO']; 
         if (!empty($_SERVER['QUERY_STRING'])) { 
           $requestUri .= '?' . $_SERVER['QUERY_STRING']; 
         } 
       } 
       return $requestUri; 
     }


    $PHP_SCHEME = $_SERVER['SERVER_PORT'] == '443' ? 'https://' : 'http://'; //测试服务器是否启动了ssl 连接如
    https 协议默认端口 是443

  • 相关阅读:
    【原】费马小定理(Fermat little theorem)详解
    【原】水库抽样详解
    【原】模幂运算(Modular Exponentiation)算法
    【原】 POJ 3630 Phone List Trie树 解题报告
    【Joke】你可以去当程序员了
    【原】 POJ 3750 小孩报数问题 Joseph相关问题详解 解题报告
    【原】 POJ 3748 位操作 解题报告
    react 性能优化
    修改jsp文件,访问时没有变化。可能是修改了系统的时间,,,郁闷呢
    在Windows 7 下使用Visual Studio 2010 编写自动申请管理员权限运行的程序
  • 原文地址:https://www.cnblogs.com/hehexu/p/8678940.html
Copyright © 2011-2022 走看看