• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

AVS30 程序分析1

php 搞代码 3年前 (2022-01-23) 19次浏览 已收录 0个评论

一、关于Rewrite的分析

AVS默认推荐使用Apache环境运行,因为程序中自带.htaccess文件,内容如下:

#如果服务器报500错误注释这2行Options -IndexesOptions +FollowSymLinks#反注释下面几行,如果你想使用图片缓存##  ExpiresActive On#  ExpiresDefault A1209600#  ExpiresByType text/html A1## Uncomment following lines if Apache doesnt support MultiViews!    RewriteEngine On        # Uncomment the 2 lines below if you are using www.domain.com        # as the baseurl for the site and users access your site        # via domain.com (THIS@本文9来源gao($daima.com搞@代@#码8网^搞代gaodaima码 IS REQUIRED FOR JQUERY TO WORK)        #如果访问的不带www的域名则跳转到带www的域名        #e.g.: baidu.com => www.baidu.com        RewriteCond %{HTTP_HOST} ^domain.com [NC]        RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]    RewriteCond %{REQUEST_FILENAME} !-f  #如果请求的不是文件    RewriteCond %{REQUEST_FILENAME} !-d  #如果请求的不是目录    RewriteRule .* loader.php [L,QSA]    #重写到loader.php处理请求

对应的Nginx规则:

	location / 	{		#-f 判断是否文件		#-d 判断是否目录		#-e 判断是否文件或目录		if (!-e $request_filename){			rewrite ^(.*)$ /loader.php last;		}	}

其中,last最为关键,之前调试的时候设为break,怎么都不行,百斯不得骑姐:)后来百度才明白这二者的区别

如果配置中存在N多个location,last匹配后还会继续循环匹配,而break则立即终止匹配。

参考文章:Nginx Rewrite研究笔记 nginx中的break与last指令区别

<?php//die('Only enable this script if you dont have support for MultiViews');$relative = '';$loaders  = array(    'ajax' => 1,    'album' => 1,    'albums' => 1,    'blog' => 1,    'blogs' => 1,    'captcha' => 1,    'categories' => 1,    'community' => 1,    'confirm' => 1,    'error' => 1,    'feedback' => 1,    'feeds' => 1,    'game' => 1,    'games' => 1,    'index' => 1,    'invite' => 1,    'loader' => 1,    'login' => 1,    'logout' => 1,    'lost' => 1,    'mail' => 1,    'notice' => 1,    'notices' => 1,    'photo' => 1,    'requests' => 1,    'search' => 1,    'signup' => 1,    'static' => 1,    'stream' => 1,    'upload' => 1,    'user' => 1,    'users' => 1,    'video' => 1,    'videos' => 1,    'edit' => 1);$query      = ( isset($_SERVER['QUERY_STRING']) ) ? $_SERVER['QUERY_STRING'] : NULL;$request    = str_replace($relative, '', $_SERVER['REQUEST_URI']);$request    = str_replace('?' .$query, '', $request);$request    = explode('/', trim($request, '/'));if (isset($request['0'])) {    $page   = $request['0'];    if (isset($loaders[$page])) {        require $page. '.php';    } else {		header('HTTP/1.0 404 Not Found');  		die();	}} else {	header('HTTP/1.0 404 Not Found');    die();}

这段代码就是检测/xxx允许访问的页面,然后访问对应的.php

eg: http://www.xxx.com/video实际上访问的是/video.php

版权声明:本文为博主原创文章,未经博主允许不得转载。

以上就介绍了AVS30 程序分析1,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:AVS30 程序分析1

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址