伪静态说明
大约 3 分钟
NGINX
NGINX伪静态说明
- last,重写后的规则,会继续用重写后的值去匹配下面的location。
- break,重写后的规则,不会去匹配下面的location。使用新的规则,直接发起一次http请求了。
- 错误页指定conf/nginx.conf设置:error_page 404 500 = /error.html 或 error_page 404 = http://域名;
rewrite '(?!css)(.*).html' /index.php?s=$1 last;
rewrite '(?!Public)(.*).html' /index.php?s=$1 last;
APACHE
APACHE伪静态说明
- R[=code](force redirect) 强制外部重定向 强制在替代字符串加上http://thishost[:thisport]/前缀重定向到外部的URL.如果code不指定,将用缺省的302 HTTP状态码。
- F(force URL to be forbidden)禁用URL,返回403HTTP状态码。
- G(force URL to be gone) 强制URL为GONE,返回410HTTP状态码。
- P(force proxy) 强制使用代理转发。
- L(last rule) 表明当前规则是最后一条规则,停止分析以后规则的重写。
- N(next round) 重新从第一条规则开始运行重写过程。
- C(chained with next rule) 与下一条规则关联
- QSA 继续传递GET参数
RewriteRule规则表达式的说明:
. 匹配任何单字符
[chars] 匹配字符串:chars
[^chars] 不匹配字符串:chars
text1|text2 可选择的字符串:text1或text2
? 匹配0到1个字符
* 匹配0到多个字符
+ 匹配1到多个字符
^ 字符串开始标志
$ 字符串结束标志
n 转义符标志
RewriteEngine On
RewriteRule (?!css)(.*).html$ /index.php?s=$1 [L]
RewriteRule (?!Public)(.*).html$ /index.php?s=$1 [L]
ErrorDocument 404 /error/404.php
rewrite 语法格式
rewrite 语法格式及参数语法说明如下
rewrite <regex> <replacement> [flag];
关键字 正则 替代内容 flag标记
- 关键字:其中关键字error_log不能改变
- 正则:perl兼容正则表达式语句进行规则匹配
- 替代内容:将正则匹配的内容替换成replacement
- flag标记:rewrite支持的flag标记
flag标记说明:
- last #本条规则匹配完成后,继续向下匹配新的location URI规则
- break #本条规则匹配完成即终止,不再匹配后面的任何规则
- redirect #返回302临时重定向,浏览器地址会显示跳转后的URL地址
- permanent #返回301永久重定向,浏览器地址栏会显示跳转后的URL地址
变量及判断
使用 !-e $request_filename
语句。其中-e
表示只要filename
存在,则为真,不管filename
是什么类型,当然这里加了!
就取反
额外的一些
-e filename 如果 filename存在,则为真
-d filename 如果 filename为目录,则为真
-f filename 如果 filename为常规文件,则为真
-L filename 如果 filename为符号链接,则为真
-r filename 如果 filename可读,则为真
-w filename 如果 filename可写,则为真
-x filename 如果 filename可执行,则为真
-s filename 如果文件长度不为0,则为真
-h filename 如果文件是软链接,则为
示例
if (!-e $request_filename){
这里就是一些url重写的规则
}
问题在于,if
和(
之间必须有个空格,这搞我很无语,能在配置文件里面可以用类似于语言类的if
语句,也算是一进步吧,但是还不是很完美。