• 周蓬安.blog的博客—强国博客—人民网 2019-05-10
  • 紫光阁中共中央国家机关工作委员会 2019-05-10
  • 感触名家笔下的端午文化吃香粽原来可以这样文艺 2019-05-09
  • 追梦夺冠游行嘲讽詹皇 百万人面前穿订制T恤羞辱他 2019-04-27
  • 《瘟疫传说》:黑死病恐怖 姐弟在绝望中求生 2019-04-10
  • 陕西国防工业职业技术学院百名大学生志愿者敬老院慰问孤寡老人陕西国防工业职业技术学院百名大学生志愿者敬老院慰问-陕西教育新闻 2019-04-08
  • 西藏拉萨:新家园 新生活 2019-04-08
  • 尊重和保障宗教信仰自由的中国实践 2019-04-06
  • 一敬泯恩仇 俄罗斯队主帅这个动作太暖了 2019-03-20
  • 四大名著剧组首次同台忆往事 经典影视剧如何铸就? 2018-12-07
  • “天眼”凝望 探秘宇宙 2018-12-07
  • 0

    nginx带问号(?) 带参数的rewrite规则,并去掉问号和参数

    Posted by 撒得一地 on 2016年6月1日 in nginx笔记
    国外稳定加速器推荐    Express | Vypr

    今天收到一个需求,要根据程序员的需要给定php的参数来跳转到指定的页面,安装常规的rewrite规则,如:

    rewrite ^/change.php?id=weibo  //www.weibo.com/;    (错误的示范)
    

    这样的跳转起不了左右,因为nginx会把后面的一整串都认为是URL,但是在浏览器上去,只会访问到change.php这个文件。

    那只能想别的方法了,仔细看了nginx的各项参数,注意到里面的:

    $query_string      解释:请求行中(GET请求)的参数;(配置1)
    $request_uri  解释:包含请求参数的原始URI,不包含主机名,如:"/change.php?id=163"  。不能修改。 (配置2)

    那我们就根据参数来判断是否要跳转。

    配置如下

    (配置1):

    nginx带问号(?) 带参数的rewrite规则,并去掉问号和参数

    方便复制:

    	if ( $query_string ~ "id=(baidu)(.*)$" )
    	{
    	    rewrite ^/css/style.css //www.baidu.com/;
    	}
    
    	if ( $query_string ~ "id=(qq|QQ)(.*)$" )
    	{
    	     rewrite ^/ //www.qq.com/;
    	}
    

    (配置2):

    nginx带问号(?) 带参数的rewrite规则,并去掉问号和参数

    方便复制:

    	if ( $request_uri ~ "/(.*).html\?id=163" )
    	{
    	  rewrite ^/ //www.163.com/;
    	 }
    
    	# 直接跳转到163 ;
    
    	if ( $request_uri ~ "/(.*).html\?id=sohu" )
    	{
    	   rewrite ^/(.*).html /css/style.css;
    	}
    	#    *.html?id=sohu 跳转到/css/style.css;伪静态
    

    测试下:

    1,测试跳转到百度:

    nginx带问号(?) 带参数的rewrite规则,并去掉问号和参数
     
    2,测试跳转到QQ:

    3,测试跳转到微博:

    nginx带问号(?) 带参数的rewrite规则,并去掉问号和参数

    4,测试跳转到163:

    nginx带问号(?) 带参数的rewrite规则,并去掉问号和参数

    测试 OK.

    那么,nginx如何重写带问号的地址,并去除或者保留问号(?)后面的参数?

    原始的动态页面需要给个301永久重定向到静态页面上,以告诉搜索引擎将原始的页面的权重转到新的静态页面下。

    if ($query_string ~* "id=(\d+)$") {
          set $id $1;
          rewrite ^/goods\.php /goods/$id.html permanent;
    }
    

    这样重定向后发现 当输入/goods.php?id=254访问的时候会跳转到/goods/254.html?id=254下,

    后面看见搜索引擎的收录地址也添加了后面不必要的参数,必须去掉后面参数。那该怎么来处理呢?

    例如:

    把//examplecom/test.php?para=xxx 重定向到//examplecom/new

    若按照默认的写法:rewrite ^/test.php(.*) /new permanent;

    重定向后的结果是://examplecom/new?para=xxx

    如果改写成:rewrite ^/test.php(.*) /new? permanent; //这里加了问号 除去问号后面的参数

    那结果就是://examplecom/new

    所以,关键点就在于“?”这个尾缀。假如又想保留某个特定的参数,那又该如何呢?可以利用Nginx本身就带有的$arg_PARAMETER参数来实现,注意格式:$arg_你定义的变量。

    原文1://blog.163.com/a12333a_li/blog/static/87594285201273101119901/

    原文2://www.eduyo.com/server/linux/781.html

    上一篇:

    相关推荐

    发表评论

    电子邮件地址不会被公开。 必填项已用*标注

    9 + 8 = ?

    网站地图|广东快乐10分开奖直播

    Copyright © 2015-2019 广东快乐10分开奖直播 All rights reserved.
    闽ICP备15015576号-1,版权所有?psz.

  • 周蓬安.blog的博客—强国博客—人民网 2019-05-10
  • 紫光阁中共中央国家机关工作委员会 2019-05-10
  • 感触名家笔下的端午文化吃香粽原来可以这样文艺 2019-05-09
  • 追梦夺冠游行嘲讽詹皇 百万人面前穿订制T恤羞辱他 2019-04-27
  • 《瘟疫传说》:黑死病恐怖 姐弟在绝望中求生 2019-04-10
  • 陕西国防工业职业技术学院百名大学生志愿者敬老院慰问孤寡老人陕西国防工业职业技术学院百名大学生志愿者敬老院慰问-陕西教育新闻 2019-04-08
  • 西藏拉萨:新家园 新生活 2019-04-08
  • 尊重和保障宗教信仰自由的中国实践 2019-04-06
  • 一敬泯恩仇 俄罗斯队主帅这个动作太暖了 2019-03-20
  • 四大名著剧组首次同台忆往事 经典影视剧如何铸就? 2018-12-07
  • “天眼”凝望 探秘宇宙 2018-12-07
  • 超级大乐透开奖结果查询 生肖时时彩开奖结果 北京赛车pk10高手心得 新时时彩中大奖 3d预测投注neiba 老时时彩 体彩p3进10期试机号 上海时时乐开奖号查询 双色球开奖 北京pk10怎么研究走势 体彩p3预测论坛 京东彩票中大奖怎么领 七乐彩开奖号码 哪里可以玩韩国快乐8 百家乐平注常赢玩法 梦见看彩票走势图