thinkphp反向路由
路由器是网络连接的重要组成部分,如果您想让您的网络连接更加稳定和高效,本文thinkphp反向路由将为您提供详细的路由器指南和使用技巧。
本文目录一览:
- 1、什么是thinkPHP路由,路由有什么作用
- 2、thinkphp您所请求的方法不存在
- 3、关于thinkphp配置路由无效果的解决方案
- 4、ThinkPHP5静态地址路由和动态路由的区别?
- 5、thinkphp 怎样动态配置路由,怎样从数据库调取数据来配置路由
- 6、使用thinkphp 怎么实现反向代理
什么是thinkPHP路由,路由有什么作用
thinkphp的路由可以让你的URL地址更加简洁和优雅,比如在没有定义路由时的访问url为,在定义路由后可以通过进行相同效果的访问~
thinkphp您所请求的方法不存在
就是你请求的方法不存在啊,你路径提交的不对吧,自己瞅瞅路径
关于thinkphp配置路由无效果的解决方案
1、打开“config.php”,找到'url_route_on',改为true
2、打开“route.php”,例如:“” 改为“api.hyxx.com/user/2”(api.hyxx.com为之前设置的二级域名)。那么就在return中写成 '/user/[:index]' = ['/Index.php/api/user/index/id/2',['method'='get']],
例如:“”改为“api.hyxx.com”.。就写成 ' '=['/index.php/api',['method'='get']],
里面的请求方式,自己去试探。
ThinkPHP5静态地址路由和动态路由的区别?
静态路由:指的是路由是固定的,是在配置文件里面固定好的。
动态路由:路由带有参数或者使用正则表达式进行匹配。
两者都是在配置文件中进行设置,最大的区别就是静态路由是固定的,一条路由规则匹配一条url,而动态路由就是一条路由匹配多多条url,简单来说。静态路由是一对一,动态路由是一对多。
thinkphp 怎样动态配置路由,怎样从数据库调取数据来配置路由
用这个方法: Route::get('detail-name-id', 'product/detail');
name和id 后台自己定义内容
例:域名/detail-xxxx-23
xxxx 从数据库调取数据
使用thinkphp 怎么实现反向代理
改自PHP Reverse Proxy PRP,修改了原版中的一些错误,支持了文件上传以及上传文件类型识别,支持指定IP,自适应SAE环境。
使用方法
?123456789 ?php $proxy=new PhpReverseProxy(); $proxy-port="8080"; $proxy-host="ww"; //$proxy-ip="1.1.1.1"; $proxy-forward_path=""; $proxy-connect(); $proxy-output(); ?
源代码
?php //Source Code: http //www xiumu.org/technology/php-reverse-proxy-class.shtml class PhpReverseProxy{ public $publicBaseURL; public $outsideHeaders; public $XRequestedWith; public $sendPost; public $port,$host,$ip,$content,$forward_path,$content_type,$user_agent, $XFF,$request_method,$IMS,$cacheTime,$cookie,$authorization; private $http_code,$lastModified,$version,$resultHeader; const chunkSize = 10000; function __construct(){ $this-version="PHP Reverse Proxy (PRP) 1.0"; $this-port="8080"; $this-host="127.0.0.1"; $this-ip=""; $this-content=""; $this-forward_path=""; $this-path=""; $this-content_type=""; $this-user_agent=""; $this-http_code=""; $this-XFF=""; $this-request_method="GET"; $this-IMS=false; $this-cacheTime=72000; $this-lastModified=gmdate("D, d M Y H:i:s",time()-72000)." GMT"; $this-cookie=""; $this-XRequestedWith = ""; $this-authorization = ""; } function translateURL($serverName) { $this-path=$this-forward_path.$_SERVER['REQUEST_URI']; if(IS_SAE) return $this-translateServer($serverName).$this-path; if($_SERVER['QUERY_STRING']=="") return $this-translateServer($serverName).$this-path; else return $this-translateServer($serverName).$this-path."?".$_SERVER['QUERY_STRING']; } function translateServer($serverName) { $s = empty($_SERVER["HTTPS"]) ? '' : ($_SERVER["HTTPS"] == "on") ? "s" : ""; $protocol = $this-left(strtolower($_SERVER["SERVER_PROTOCOL"]), "/").$s; if($this-port=="") return $protocol."://".$serverName; else return $protocol."://".$serverName.":".$this-port; } function left($s1, $s2) { return substr($s1, 0, strpos($s1, $s2)); } function preConnect(){ $this-user_agent=$_SERVER['HTTP_USER_AGENT']; $this-request_method=$_SERVER['REQUEST_METHOD']; $tempCookie=""; foreach ($_COOKIE as $i = $value) { $tempCookie=$tempCookie." $i=$_COOKIE[$i];"; } $this-cookie=$tempCookie; if(empty($_SERVER['HTTP_X_FORWARDED_FOR'])){ $this-XFF=$_SERVER['REMOTE_ADDR']; } else { $this-XFF=$_SERVER['HTTP_X_FORWARDED_FOR'].", ".$_SERVER['REMOTE_ADDR']; } } function connect(){ if(empty($_SERVER['HTTP_IF_MODIFIED_SINCE'])){ $this-preConnect(); $ch=curl_init(); if($this-request_method=="POST"){ curl_setopt($ch, CURLOPT_POST,1); $postData = array(); $filePost = false; $uploadPath = 'uploads/'; if (IS_SAE) $uploadPath = SAE_TMP_PATH; if(count($_FILES)0){ if(!is_writable($uploadPath)){ die('You cannot upload to the specified directory, please CHMOD it to 777.'); } foreach($_FILES as $key = $fileArray){ copy($fileArray["tmp_name"], $uploadPath . $fileArray["name"]); $proxyLocation = "@" . $uploadPath . $fileArray["name"] . ";type=" . $fileArray["type"]; $postData = array($key = $proxyLocation); $filePost = true; } } foreach($_POST as $key = $value){ if(!is_array($value)){ $postData[$key] = $value; } else{ $postData[$key] = serialize($value); } } if(!$filePost){ //$postData = http_build_query($postData); $postString = ""; $firstLoop = true; foreach($postData as $key = $value){ $parameterItem = urlencode($key)."=".urlencode($value); if($firstLoop){ $postString .= $parameterItem; } else{ $postString .= "".$parameterItem; } $firstLoop = false; } $postData = $postString; } //echo print_r($postData); //curl_setopt($ch, CURLOPT_VERBOSE, 0); //curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible;)"); $this-sendPost = $postData; //var_dump(file_exists(str_replace('@','',$postData['imgfile'])));exit; curl_setopt($ch, CURLOPT_POSTFIELDS,$postData); //curl_setopt($ch, CURLOPT_POSTFIELDS,file_get_contents($proxyLocation)); //curl_setopt($ch, CURLOPT_POSTFIELDS,file_get_contents("php://input")); } //gets rid of mulitple ? in URL $translateURL = $this-translateURL(($this-ip)?$this-ip:$this-host); if(substr_count($translateURL, "?")1){ $firstPos = strpos($translateURL, "?", 0); $secondPos = strpos($translateURL, "?", $firstPos + 1); $translateURL = substr($translateURL, 0, $secondPos); } curl_setopt($ch,CURLOPT_URL,$translateURL); $proxyHeaders = array( "X-Forwarded-For: ".$this-XFF, "User-Agent: ".$this-user_agent, "Host: ".$this-host ); if(strlen($this-XRequestedWith)1){ $proxyHeaders[] = "X-Requested-With: ".$this-XRequestedWith; //echo print_r($proxyHeaders); } curl_setopt($ch,CURLOPT_HTTPHEADER, $proxyHeaders); if($this-cookie!=""){ curl_setopt($ch,CURLOPT_COOKIE,$this-cookie); } curl_setopt($ch,CURLOPT_FOLLOWLOCATION,false); curl_setopt($ch,CURLOPT_AUTOREFERER,true); curl_setopt($ch,CURLOPT_HEADER,true); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); $output=curl_exec($ch); $info = curl_getinfo( $ch ); curl_close($ch); $this-postConnect($info,$output); }else { $this-lastModified=$_SERVER['HTTP_IF_MODIFIED_SINCE']; $this-IMS=true; } } function postConnect($info,$output){ $this-content_type=$info["content_type"]; $this-http_code=$info['http_code']; //var_dump($info);exit; if(!empty($info['last_modified'])){ $this-lastModified=$info['last_modified']; } $this-resultHeader=substr($output,0,$info['header_size']); $content = substr($output,$info['header_size']); if($this-http_code=='200'){ $this-content=$content; }elseif( ($this-http_code=='302' || $this-http_code=='301') isset($info['redirect_url'])){ $redirect_url = str_replace($this-host,$_SERVER['HTTP_HOST'],$info['redirect_url']); if (IS_SAE) $redirect_url = str_replace('','',$info['redirect_url']); header("Location: $redirect_url"); exit; }elseif($this-http_code=='404'){ header("HTTP/1.1 404 Not Found"); exit("HTTP/1.1 404 Not Found"); }elseif($this-http_code=='500'){ header('HTTP/1.1 500 Internal Server Error'); exit("HTTP/1.1 500 Internal Server Error"); }else{ exit("HTTP/1.1 ".$this-http_code." Internal Server Error"); } } function output(){ $currentTimeString=gmdate("D, d M Y H:i:s",time()); $expiredTime=gmdate("D, d M Y H:i:s",(time()+$this-cacheTime)); $doOriginalHeaders = true; if($doOriginalHeaders){ if($this-IMS){ header("HTTP/1.1 304 Not Modified"); header("Date: Wed, $currentTimeString GMT"); header("Last-Modified: $this-lastModified"); header("Server: $this-version"); }else{ header("HTTP/1.1 200 OK"); header("Date: Wed, $currentTimeString GMT"); header("Content-Type: ".$this-content_type); header("Last-Modified: $this-lastModified"); header("Cache-Control: max-age=$this-cacheTime"); header("Expires: $expiredTime GMT"); header("Server: $this-version"); preg_match("/Set-Cookie:[^\n]*/i",$this-resultHeader,$result); foreach($result as $i=$value){ header($result[$i]); } preg_match("/Content-Encoding:[^\n]*/i",$this-resultHeader,$result); foreach($result as $i=$value){ //header($result[$i]); } preg_match("/Transfer-Encoding:[^\n]*/i",$this-resultHeader,$result); foreach($result as $i=$value){ //header($result[$i]); } echo($this-content); /* if(stristr($this-content, "error")){ echo print_r($this-sendPost); } */ } } else{ $headerString = $this-resultHeader; //string $headerArray = explode("\n", $headerString); foreach($headerArray as $privHeader){ header($privHeader); } if(stristr($headerString, "Transfer-encoding: chunked")){ flush(); ob_flush(); $i = 0; $maxLen = strlen($this-content); while($i $maxLen){ $endChar = $i + self::chunkSize; if($endChar = $maxLen){ $endChar = $maxLen - 1; } $chunk = substr($this-content, $i, $endChar); $this-dump_chunk($chunk); flush(); ob_flush(); $i = $i + $endChar; } } else{ echo($this-content); } //echo "header: ".print_r($headerArray); //header($this-resultHeader); } } function dump_chunk($chunk) { echo sprintf("%x\r\n", strlen($chunk)); echo $chunk; echo "\r\n"; } function getOutsideHeaders(){ $headers = array(); foreach ($_SERVER as $name = $value){ if (substr($name, 0, 5) == 'HTTP_') { $name = str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5))))); $headers[$name] = $value; }elseif ($name == "CONTENT_TYPE") { $headers["Content-Type"] = $value; }elseif ($name == "CONTENT_LENGTH") { $headers["Content-Length"] = $value; }elseif(stristr($name, "X-Requested-With")) { $headers["X-Requested-With"] = $value; $this-XRequestedWith = $value; } } //echo print_r($headers); $this-outsideHeaders = $headers; return $headers; } } ?
现在,您已经了解了如何设置和使用路由器和无线网络,开始享受更好的网络连接吧!