新浪sae url rewrite(伪静态、重定向)详解
新浪sae url rewrite(伪静态、重定向)详解
sae全程Sina App Engine,真是一个好东西,他有很多优秀的特性,简单来说SAE就是一个简单高效的分布式Web服务开发、运行平台。
支持现在常用的 php+mysql环境,在开发中难免会碰到项目需要做url rewrite(伪静态),然而sae不支持 apache 下的.htaccess 。不过不要难过,sae提供了自己的rewrite方式,本文我们就对sae的rewrite做个介绍,希望需要的同志能快速根据自己需求写想要的规则
config.yaml简介
sae的配置文件在每个应用的根目录里面,名字是config.yaml。这个文件就类似于apache的.htaccess,所有的伪静态规则,404设置等都在这里配置。
config.yaml内容格式
name: phpclubs
version: 1
handle:
- directoryindex: index.php index.html index.htm
- errordoc: 404 /path/404.html
- rewrite: if(!is_dir( ) && path ~ "urldir/(.*)") goto "/tools/$1"
config.yaml修改途径
我们创建项目版本时系统会自动生成config.yaml文件在根目录(如果没有自己可以手动创建一个),一方面 我们可以通过 在线编辑器(SAE CLOUD EDITOR) 进行编辑config.yaml文件。另一方面我们还可以使用svn本地编辑,提交到服务器,修改都是实时生效的。
语法说明
AppConfig的语法分两种,一种是简单的参数罗列方式,一种是灵活的表达式语法,不同的功能会用到不同的类型的语法
1、表达式语法
其形式为:
if (表达式) 执行规则
表达式 有如下形式:
1) in_header["header_name"] op string_or_digit
2) out_header["header_name"] op string_or_digit
3) path op string
4) query_string op string
5) is_file()
6) is_dir()
关于以上形式说明如下:
1) in_header 是请求头,out_header 是响应头,header_name 是 header 的名字,这个我们一般用到的不多
2) op 是操作符,有 ~(正则匹配) !~(正则不匹配) ==(相等,用于字符串和数字) !=(不相等,用于字符串和数字) >, >=, <, <=(比较操作符仅用于整形数字),其中~正则匹配 用的比较多
3) string 是形如 “xxxx” 的字符串
4) string_or_digit 表示 string 或者 digit,根据 op 的种类,后面跟 string 或者 digit
5) path 是系统宏,表示用户请求的 url 去掉主机部分和查询串后剩下的部分,用到的很多,例如:http://www.xxx.com/list/test.php?id=23 path就是 /list/test.php
6) query_string 是系统宏,表示查询串,一般是url中问号后面的内容 例如上面 的url 中的 id=23
7) is_file() 和 is_dir 是系统函数,判断 path 是文件还是目录,!is_file(),!is_dir() 分别是其否定形式。(使用也比较多)
2、URL重写
- rewrite: if (表达式) goto 目标url
在 rewrite 中,表达式 可以用 && 连接,组成复合表达式。 path 只能出现一个(如果有多个,只有最后一个生效,其它被忽略),当省略 path 时,表示任意请求。
target_url 表示重定向的目标url,在target_url 可以以 $N 的形式表示 path 中匹配到的内容,%N 的形式表示最后一个query_string 中匹配到的内容,因为query_string 可以在 if 中出现多次,以%{QUERY_STRING} 表示查询串。 例如:- rewrite: if(query_string ~ “^(so)$” && path ~ “zhaochou$”) goto “/url/%1″
- rewrite: if(is_dir( ) && path ~ “urldir/(.*)”) goto “/url/$1″
- rewrite: if( !is_file() && !is_dir()) goto “index.php?%{QUERY_STRING}”
比如我们要先下面的伪静态
实例1
真实处理地址为: www.xxx.com/index.php?a=list&b=new&id=23
要伪静态成这样:www.xxx.com/list-new-23.html
规则 -rewrite: if(path ~ “list-new-(\d+)\.html”) goto “index.php?a=list&b=new&id=$1″
实例2
真实处理地址为: www.xxx.com/index.php?a=list&b=new&id=23
要伪静态成这样:www.xxx.com/list-new.php?id=23
规则 -rewrite: if(path ~ “list-new\.php” && query_string ~ “id=(\d+)”) goto “index.php?a=list&b=new&id=%1″
3、自定义目录默认页面
当访问url没有指定文件的路径时,返回aaa.php,如果其不存在,则返回bbb.html
4、自定义错误页面(404页面等)
5、对文件目录进行简单的访问权限认证
访问secret目录需要密码,允许用户test用密码123qwe访问,用户coder用密码123asd访问
尾语
相信你试完上面的东西,应该可以自己写想要的规则了。祝你好运。。。
新浪sae url rewrite(伪静态、重定向)详解的更多相关文章
- 新浪SAE URLRewrite(伪静态、重定向)详解
SAE全称Sina App Engine,真是一个好东西,他有很多优秀的特性,简单来说SAE就是一个简单高效的分布式Web服务开发.运行平台.支持现在常用的 PHP+Mysql 环境,在开发中难免会碰 ...
- 【解决】 新浪sae固定链接404 问题
固定链接404 固定链接是一个很重要的内容,wordpress默认的链接很复杂,也不利于搜索引擎搜索.wordpress也提供修改固定链接的功能,在设置里面[固定链接]修改. 但是,使用新浪sae的小 ...
- 新浪SAE中文分词接口
最近发现新浪SAE平台上竟然也提供分词功能,分词效果也还不错,由新浪爱问提供的分词服务,研究了一番,做了一个简易版的在线调用接口(get方式,非post) 官网说明:http://apidoc.sin ...
- 新浪SAE部署django博客
步骤: 第一步:注册新浪SAE账号(即新浪微博),下载TortoiseSVN 第二步:部署代码 使用SAE来部署代码,SAE提供的是PAAS层的云服务,即不是给你一个虚拟主机而是直接上传应用.进入SA ...
- 如何利用php+android+新浪sae服务器做一个app下载应用
功能简介:提供一个app下载的平台,类似于appstore,上面有很多app可供下载 实现基本思路:利用android,在手机桌面建立一个图标,点击该图标不是打开app应用,而是跳转到一个web页面, ...
- 新浪SAE创建微信模板消息应用与SVN的使用
本地项目源文件必须放在应用名目录下面的数字目录里面.如:D:\SVN\xtmp1\1 我们在前面讲述在新浪SAE中如何建站,今天我们来详解如何上传文件.新浪SAE中是不允许用FTP来上传的.我们只能用 ...
- 微信公众号申请+新浪SAE申请
一. 新浪SAE服务申请 1. 注冊地址:http://t.cn/RqMHPto 2. 选择控制台>>云应用SAE 3. 创建新应用 4. 填写域名 5. 代码管理选择SVN 6. 创建版 ...
- 国内云引擎平台概览——新浪SAE,阿里ACE,百度BCE
新浪SAE 平时大家的測试server都是执行在自己的PC上面,用Tomcat或者IIS搭建的本机server. 事实上新浪云平台SinaAppEngine也是挺好用的. 今天总结一下我使用过程中的一 ...
- 新浪sae上安装原生wordpress4.1
1. 加入/改动wp-config.php文件 <?php /** * WordPress 基础配置文件. * * 本文件包括下面配置选项: MySQL 设置.数据库表名前缀. * 密匙.Wor ...
随机推荐
- python手动实现深拷贝
深拷贝是将对象全拷贝,包括嵌套对象 def deepcopy(cls): if isinstance(cls, dict): dct = {} for k, v in cls.items(): dct ...
- A convenient way to recognize and handwrite multidimensional arrays in Numpy
As a new learner of Numpy, it is very common to be confused by the form of array, braces nested in b ...
- 易语言加壳SDK(宏标记)
转载 http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece76310508c31490797634b87834e29938448e435061 ...
- Ubuntu下搭建yocto
参考自: https://www.jianshu.com/p/f6e0debb5e1f https://blog.csdn.net/qq_31041847/article/details/902114 ...
- linux扩容空间,再扩容文件系统
Linux磁盘空间进行扩容 参考博客 http://blog.csdn.net/dingchenxixi/article/details/50986472 http://blog.sina.com.c ...
- 51nod 1439:互质对 容斥原理
1439 互质对 题目来源: CodeForces 基准时间限制:2 秒 空间限制:131072 KB 分值: 160 难度:6级算法题 收藏 取消关注 有n个数字,a[1],a[2],-,a[n ...
- Windows 10中使用VirtualBox
新版Windows 10或者安装了新的更新以后,VirtualBox虚拟机就不能用了. 原因是WIndows10里面有个叫Virtualization-base security的安全机制打开了. 关 ...
- 指令——cd
一个完整的指令的标准格式: Linux通用的格式——#指令主体(空格) [选项](空格) [操作对象] 一个指令可以包含多个选项,操作对象也可以是多个. 命令:#cd (change director ...
- 杭电oj3306:Another kind of Fibonacci(矩阵快速幂)
Another kind of Fibonacci 题目链接 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (J ...
- pyinstaller打包PySide2写的GUI程序,调用ffmpeg隐藏CMD控制台解决方案
1 问题描述 使用PySide2写了一个GUI程序,调用ffmpeg命令行工具,做简单的批量视频处理(调整帧宽度.帧高度.视频变速.降低视频码率达到限制视频大小),使用了ffmpeg. ffmpeg- ...