nginx rewrite 参数和例子+常用Rewrite伪静态法则.docx
- 文档编号:30549657
- 上传时间:2023-08-16
- 格式:DOCX
- 页数:15
- 大小:19.33KB
nginx rewrite 参数和例子+常用Rewrite伪静态法则.docx
《nginx rewrite 参数和例子+常用Rewrite伪静态法则.docx》由会员分享,可在线阅读,更多相关《nginx rewrite 参数和例子+常用Rewrite伪静态法则.docx(15页珍藏版)》请在冰豆网上搜索。
nginxrewrite参数和例子+常用Rewrite伪静态法则
正则表达式匹配,其中:
1.*~为区分大小写匹配
2.*~*为不区分大小写匹配
3.*!
~和!
~*分别为区分大小写不匹配及不区分大小写不匹配
文件及目录匹配,其中:
1.*-f和!
-f用来判断是否存在文件
2.*-d和!
-d用来判断是否存在目录
3.*-e和!
-e用来判断是否存在文件或目录
4.*-x和!
-x用来判断文件是否可执行
flag标记有:
1.*last相当于Apache里的[L]标记,表示完成rewrite
2.*break终止匹配,不再匹配后面的规则
3.*redirect返回302临时重定向地址栏会显示跳转后的地址
4.*permanent返回301永久重定向地址栏会显示跳转后的地址
一些可用的全局变量有,可以用做条件判断(待补全)
1.$args
2.$content_length
3.$content_type
4.$document_root
5.$document_uri
6.$host
7.$http_user_agent
8.$http_cookie
9.$limit_rate
10.$request_body_file
11.$request_method
12.$remote_addr
13.$remote_port
14.$remote_user
15.$request_filename
16.$request_uri
17.$query_string
18.$scheme
19.$server_protocol
20.$server_addr
21.$server_name
22.$server_port
23.$uri
结合QeePHP的例子
1.if(!
-d$request_filename){
2.rewrite^/([a-z-A-Z]+)/([a-z-A-Z]+)/?
(.*)$/index.php?
namespace=user&controller=$1&action=$2&$3last;
3.rewrite^/([a-z-A-Z]+)/?
$/index.php?
namespace=user&controller=$1last;
4.break;
多目录转成参数
=>
1.if($host~*(.*)/.domain/.com){
2.set$sub_name$1;
3.rewrite^/sort//(/d+)//?
$/index.php?
act=sort&cid=$sub_name&id=$1last;
4.}
目录对换
/123456/xxxx->/xxxx?
id=123456
1.rewrite^/(/d+)/(.+)//$2?
id=$1last;
例如下面设定nginx在用户使用ie的使用重定向到/nginx-ie目录下:
1.if($http_user_agent~MSIE){
2.rewrite^(.*)$/nginx-ie/$1break;
3.}
目录自动加“/”
1.if(-d$request_filename){
2.rewrite^/(.*)([^/])$http:
//$host/$1$2/permanent;
3.}
禁止htaccess
1.location~//.ht{
2. denyall;
3. }
禁止多个目录
1.location~^/(cron|templates)/{
2. denyall;
3.break;
4. }
禁止以/data开头的文件
可以禁止/data/下多级目录下.log.txt等请求;
1.location~^/data{
2. denyall;
3. }
禁止单个目录
不能禁止.log.txt能请求
1.location/searchword/cron/{
2. denyall;
3. }
禁止单个文件
1.location~/data/sql/data.sql{
2. denyall;
3. }
给favicon.ico和robots.txt设置过期时间;
这里为favicon.ico为99天,robots.txt为7天并不记录404错误日志
1.location~(favicon.ico){
2. log_not_foundoff;
3.expires99d;
4.break;
5. }
6.
7. location~(robots.txt){
8. log_not_foundoff;
9.expires7d;
10.break;
11. }
设定某个文件的过期时间;这里为600秒,并不记录访问日志
1.location^~/html/scripts/loadhead_1.js{
2. access_log off;
3. root/opt/lampp/htdocs/web;
4.expires600;
5.break;
6. }
文件反盗链并设置过期时间
这里的return412为自定义的http状态码,默认为403,方便找出正确的盗链的请求
“rewrite^/
“access_logoff;”不记录访问日志,减轻压力
“expires3d”所有文件3天的浏览器缓存
1.location~*^.+/.(jpg|jpeg|gif|png|swf|rar|zip|css|js)${
2.valid_referersnoneblocked**localhost208.97.167.194;
3.if($invalid_referer){
4. rewrite^/
5. return412;
6. break;
7.}
8. access_log off;
9. root/opt/lampp/htdocs/web;
10.expires3d;
11.break;
12. }
只充许固定ip访问网站,并加上密码
1.root /opt/htdocs/www;
2.allow 208.97.167.194;
3.allow 222.33.1.2;
4.allow 231.152.49.4;
5.deny all;
6.auth_basic"C1G_ADMIN";
7.auth_basic_user_filehtpasswd;
将多级目录下的文件转成一个文件,增强seo效果
/job-123-456-789.html指向/job/123/456/789.html
1.rewrite^/job-([0-9]+)-([0-9]+)-([0-9]+)/.html$/job/$1/$2/jobshow_$3.htmllast;
将根目录下某个文件夹指向2级目录
如/shanghaijob/指向/area/shanghai/
如果你将last改成permanent,那么浏览器地址栏显是/location/shanghai/
1.rewrite^/([0-9a-z]+)job/(.*)$/area/$1/$2last;
上面例子有个问题是访问/shanghai时将不会匹配
1.rewrite^/([0-9a-z]+)job$/area/$1/last;
2.rewrite^/([0-9a-z]+)job/(.*)$/area/$1/$2last;
这样/shanghai也可以访问了,但页面中的相对链接无法使用,
如./list_1.html真实地址是/area/shanghia/list_1.html会变成/list_1.html,导至无法访问。
那我加上自动跳转也是不行咯
(-d$request_filename)它有个条件是必需为真实目录,而我的rewrite不是的,所以没有效果
1.if(-d$request_filename){
2.rewrite^/(.*)([^/])$http:
//$host/$1$2/permanent;
3.}
知道原因后就好办了,让我手动跳转吧
1.rewrite^/([0-9a-z]+)job$/$1job/permanent;
2.rewrite^/([0-9a-z]+)job/(.*)$/area/$1/$2last;
文件和目录不存在的时候重定向:
1.if(!
-e$request_filename){
2.proxy_passhttp:
//127.0.0.1;
3.}
域名跳转
1.server
2. {
3. listen 80;
4. server_name ;
5. indexindex.htmlindex.htmindex.php;
6. root /opt/lampp/htdocs/www;
7. rewrite^/
8. access_log off;
9. }
多域名转向
1.server_name ;
2. indexindex.htmlindex.htmindex.php;
3. root /opt/lampp/htdocs;
4.if($host~"c1gstudio/.net"){
5.rewrite^(.*)$1permanent;
6.}
三级域名跳转
1.if($http_host~*"^(.*)/.i/.c1gstudio/.com$"){
2.rewrite^(.*)$1;
3.break;
4.}
域名镜向
1.server
2. {
3. listen 80;
4. server_name ;
5. indexindex.htmlindex.htmindex.php;
6. root /opt/lampp/htdocs/www;
7. rewrite^/(.*)last;
8. access_log off;
9. }
某个子目录作镜向
1.location^~/zhaopinhui{
2. rewrite^.+last;
3. break;
4. }
discuzucenterhome(uchome)rewrite
1.rewrite^/(space|network)-(.+)/.html$/$1.php?
rewrite=$2last;
2.rewrite^/(space|network)/.html$/$1.phplast;
3.rewrite^/([0-9]+)$/space.php?
uid=$1last;
discuz7rewrite
1.rewrite^(.*)/archiver/((fid|tid)-[/w/-]+/.html)$$1/archiver/index.php?
$2last;
2.rewrite^(.*)/forum-([0-9]+)-([0-9]+)/.html$$1/forumdisplay.php?
fid=$2&page=$3last;
3.rewrite^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+)/.html$$1/viewthread.php?
tid=$2&extra=page/%3D$4&page=$3last;
4.rewrite^(.*)/profile-(username|uid)-(.+)/.html$$1/viewpro.php?
$2=$3last;
5.rewrite^(.*)/space-(username|uid)-(.+)/.html$$1/space.php?
$2=$3last;
6.rewrite^(.*)/tag-(.+)/.html$$1/tag.php?
name=$2last;
给discuz某版块单独配置域名
1.server_name ;
2.
3. location=/{
4. if($http_host~news/$){
5. rewrite^.+last;
6. break;
7.}
8. }
discuzucenter头像rewrite优化
1.location^~/ucenter{
2. location~.*/.php?
$
3. {
4. #fastcgi_pass unix:
/tmp/php-cgi.sock;
5. fastcgi_pass 127.0.0.1:
9000;
6. fastcgi_indexindex.php;
7. includefcgi.conf;
8. }
9.
10. location/ucenter/data/avatar{
11.log_not_foundoff;
12.access_log off;
13.location~/(.*)_big/.jpg${
14. error_page404/ucenter/images/noavatar_big.gif;
15.}
16.location~/(.*)_middle/.jpg${
17. error_page404/ucenter/images/noavatar_middle.gif;
18.}
19.location~/(.*)_small/.jpg${
20. error_page404/ucenter/images/noavatar_small.gif;
21.}
22.expires300;
23.break;
24. }
25. }
jspacerewrite
1.location~.*/.php?
$
2. {
3. #fastcgi_pass unix:
/tmp/php-cgi.sock;
4. fastcgi_pass 127.0.0.1:
9000;
5. fastcgi_indexindex.php;
6. includefcgi.conf;
7. }
8.
9. location~*^/index.php/
10. {
11. rewrite^/index.php/(.*)/index.php?
$1break;
12. fastcgi_pass 127.0.0.1:
9000;
13. fastcgi_indexindex.php;
14. includefcgi.conf;
15. }
信赖此刻大部门用LinuxVPS的伴侣都在利用这个敏捷传布的Nginx,本日就清算一下最常见的PHP法式的Rewrite(伪静态法则)。
Wordpress:
location/{
indexindex.htmlindex.php;
if(-f$request_filename/index.html){
rewrite(.*)$1/index.htmlbreak;
}
if(-f$request_filename/index.php){
rewrite(.*)$1/index.php;
}
if(!
-f$request_filename){
rewrite(.*)/index.php;
}
}
PHPCMS:
location/{
###以下为PHPCMS伪静态化rewrite法则
rewrite^(.*)show-([0-9]+)-([0-9]+)\.html$$1/show.php?
itemid=$2&page=$3;
rewrite^(.*)list-([0-9]+)-([0-9]+)\.html$$1/list.php?
catid=$2&page=$3;
rewrite^(.*)show-([0-9]+)\.html$$1/show.php?
specialid=$2;
####以下为PHPWind伪静态化rewrite法则
rewrite^(.*)-htm-(.*)$$1.php?
$2last;
rewrite^(.*)/simple/([a-z0-9\_]+\.html)$$1/simple/index.php?
$2last;
}
ECSHOP:
if(!
-e$request_filename)
{
rewrite"^/index.phplast;
rewrite"^/category$"/index.phplast;
rewrite"^/feed-c([0-9]+)\.xml$”/feed.php?
cat=$1last;
rewrite“^/feed-b([0-9]+)\.xml$”/feed.php?
brand=$1last;
rewrite“^/feed\.xml$”/feed.phplast;
rewrite“^/category-([0-9]+)-b([0-9]+)-min([0-9]+)-max([0-9]+)-attr([^-]*)-([0-9]+)-(.+)-([a-zA-Z]+)(.*)\.html$”/category.php?
id=$1&brand=$2&price_min=$3&price_max=$4&filter_attr=$5&page=$6&sort=$7&order=$8last;
rewrite“^/category-([0-9]+)-b([0-9]+)-min([0-9]+)-max([0-9]+)-attr([^-]*)(.*)\.html$”/category.php?
id=$1&brand=$2&price_min=$3&price_max=$4&filter_attr=$5last;
rewrite“^/category-([0-9]+)-b([0-9]+)-([0-9]+)-(.+)-([a-zA-Z]+)(.*)\.html$”/category.php?
id=$1&brand=$2&page=$3&sort=$4&order=$5last;
rewrite“^/category-([0-9]+)-b([0-9]+)-([0-9]+)(.*)\.html$”/category.php?
id=$1&brand=$2&page=$3last;
rewrite“^/category-([0-9]+)-b([0-9]+)(.*)\.html$”/category.php?
id=$1&brand=$2last;
rewrite“^/category-([0-9]+)(.*)\.html$”/category.php?
id=$1last;
rewrite“^/goods-([0-9]+)(.*)\.html”/goods.php?
id=$1last;
rewrite“^/article_cat-([0-9]+)-([0-9]+)-(.+)-([a-zA-Z]+)(.*)\.html$”/article_cat.php?
id=$1&page=$2&sort=$3&order=$4last;
rewrite“^/article_cat-([0-9]+)-([0-9]+)(.*)\.html$”/article_cat.php?
id=$1&page=$2last;
rewrite“^/article_cat-([0-9]+)(.*)\.html$”/article_cat.php?
id=$1last;
rewrite“^/article-([0-9]+)(.*)\.html$”/article.php?
id=$1last;
rewrite“^/brand-([0-9]+)-c([0-9]+)-([0-9]+)-(.+)-([a-zA-Z]+)\.html”/brand.php?
id=$1&cat=$2&
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- nginx rewrite 参数和例子+常用Rewrite伪静态法则 参数 例子 常用 静态 法则