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

  • 相关阅读:
    Callable的Future模式
    并发队列
    并发工具类和线程池
    安全与死锁问题
    ConcurrentHashMap底层实现
    Map集合常见面试题
    List集合框架
    类加载器
    Activiti中个人任务分配
    流程定义
  • 原文地址:https://www.cnblogs.com/hehexu/p/8678940.html
Copyright © 2011-2022 走看看