nginx1.6 rewrite正则表达式 如何更改

问题描述

nginx1.6 rewrite正则表达式 如何更改

我自己写了一个正则

rewrite /music_content/([0-9]+).html$ /music_content.do?articleID=$1 last;
就是说music_content下的目录任意数字的html 都重写为 music_content.do?articleID=数字 比如:
http://www.XXX.com.cn/music_content/521.html 则重写为http://www.XXX.com.cn/music_content.do?articeID=521

可是发现了一个问题 如果网站为 http://XXX.com.cn/music_content/521.html 时(去掉www) 点开时 nginx提示没有当前页 然后我就把Url更改成正常的do 就是:http://XXX.com.cn/music_content.do?articeID=521时 页面也可正常显示
为什么会出现这样的问题,应该如何解决

解决方案

105 location / {
106 if ($host != 'www.xxx.com.cn' ) {
107 rewrite ^/(.*)$ http://www.xxx.com.cn/$1 permanent;
108 }

类似之样,把不带www的转成带www的

解决方案二:

105 location / {
106 if ($host != 'www.xxx.com.cn' ) {
107 rewrite ^/(.*)$ http://www.xxx.com.cn/$1 permanent;
108 }

类似之样,把不带www的转成带www的

解决方案三:

好像不行的 我的default.conf 配置文件的内容是:
server {
listen 80 default;
server_name www.ifantasy.com.cn;
index index.do index0.html index.html index.jsp;
root /alidata/www/default;

location ~ .do$ {
  proxy_pass              http://localhost:8080;
  proxy_set_header        X-Real-IP $remote_addr;#转发客户端真实IP
  proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header        Host $http_host;
} 

 location ~ .jsp$ {
  proxy_pass              http://localhost:8080;
  proxy_set_header        X-Real-IP $remote_addr;
  proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header        Host $http_host;
}
location ~ ^/servlet/* {
  proxy_pass              http://localhost:8080;
  proxy_set_header        X-Real-IP $remote_addr;
  proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header        Host $http_host;
}  

location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ {
    root /alidata/www/default;
}
location ~ .*.(js|css|html|htm)?$  {
    root /alidata/www/default;
}
location ~ ^/WEB-INF/* {#禁止访问被保护的目录
  deny all;
}
include /alidata/server/nginx-1.6.0/conf/rewrite/myweb.conf;

location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
{
    expires 30d;
}

location ~ .*.(js|css)?$
{
    expires 1h;
}
location / {
 if ($host != 'www.ifantasy.com.cn' ) {
 rewrite ^/(.*)$ http://www.ifantasy.com.cn/$1 permanent;

}

error_page 404 = http://www.ifantasy.com.cn/error.jsp;
error_page  500 502 503 504 =  http://www.ifantasy.com.cn/error.jsp;

access_log  /alidata/log/nginx/access/default.log;

}

rewrite重写文件
rewrite /music_content/([0-9]+).html$ /music_content.do?articleID=$1 last;
可是访问的时候还有错误
更改成do的形式是可以的

解决方案四:

location / {
    if ($host != 'www.ifantasy.com.cn' ) {
        rewrite ^/(.*)$ http://www.ifantasy.com.cn/$1 permanent;
    }
    rewrite /music_content/([0-9]+).html$ /music_content.do?articleID=$1 last;
}

解决方案五:

myweb.conf 正则表达式规则定义: 不过按照您写的那样还是不行

时间: 2024-10-03 06:51:12

nginx1.6 rewrite正则表达式 如何更改的相关文章

求apahce rewrite正则表达式

问题描述 匹配URL里面任意位置的<>'"四个特殊字符,指向到/error.php页面实现简单的安全过滤 解决方案 解决方案二:判断正则:[<>'"]解决方案三:http://shop.jooyea.cn/simple/reg/index.html.d?callback=%2Fsimple%2Fcart2"><script>alert(document.cookie);</sCript> 这种URL无法匹配,不知道为何

nginx 重写 rewrite 基础及实例(转)

nginx rewrite 正则表达式匹配 大小写匹配 ~ 为区分大小写匹配  ~* 为不区分大小写匹配  !~和!~*分别为区分大小写不匹配及不区分大小写不匹配  文件及目录匹配 -f和!-f用来判断是否存在文件  -d和!-d用来判断是否存在目录  -e和!-e用来判断是否存在文件或目录  -x和!-x用来判断文件是否可执行  flag标记 last 相当于Apache里的[L]标记,表示完成rewrite break 终止匹配, 不再匹配后面的规则. redirect 返回302临时重定向

nginx重写rewrite基础及实例分享_nginx

nginx rewrite 正则表达式匹配 大小写匹配 ~ 为区分大小写匹配 ~* 为不区分大小写匹配 !~和!~*分别为区分大小写不匹配及不区分大小写不匹配 文件及目录匹配 -f和!-f用来判断是否存在文件 -d和!-d用来判断是否存在目录 -e和!-e用来判断是否存在文件或目录 -x和!-x用来判断文件是否可执行 flag标记 last 相当于Apache里的[L]标记,表示完成rewrite break 终止匹配, 不再匹配后面的规则. redirect 返回302临时重定向 地址栏会显示

nginx rewrite 经典实例判断IE浏览器并提示

搞过前端的估计都碰到最头疼的问题就是浏览器兼容性问题了,特别是针对IE浏览器.往往前端为了省事就搞一个页面提示用户升级浏览器或者显示简单的静态页面.那接下来就需要运维来配置nginx rewrite规则了. 在这里直接贴出配置实例 server {listen 80;server_name xxx.xxx.com;root   /www ;if ( $http_user_agent ~* "MSIE [6-9].[0-9]") {rewrite   /ie.html break;}}

nginx 301 302重定向跳转配置

  首先看一个完整代码示例,关于nginx 301 302跳转的. 301跳转设置: server { listen 80; server_name downcc.com; rewrite ^/(.*) http://www.downcc.com/$1 permanent; access_log off; } 302跳转设置: server { listen 80; server_name downcc.com; rewrite ^/(.*) http://www.downcc.com/$1 r

Nginx下301重定向域名的方法小结_nginx

linux中nginx 301重定向跳转方法总结,有需要的朋友可参考一下. 第一种情况:访问aaaaaaa站定向到bbbbbbbbbbb站 复制代码 代码如下: server { server_naaaaaaame www.aaaaaaa.com ; rewrite ^(.*) http://www.bbbbbbbbbbb.com$1 permaaaaaaanent; } 第二种情况:不是访问aaaaaaa站的全部重定向到指定页面 复制代码 代码如下: server { server_naaaa

《CCNP安全防火墙642-618认证考试指南》——2.3节使用CLI

2.3 使用CLICCNP安全防火墙642-618认证考试指南网络安全工程师经常需要对防火墙的安全策略和配置进行修改.另外,在日常维护工作中,防火墙的行为需要被监控,防火墙处理穿越其自身的流量的行为也需要执行故障排除.为了更好地完成以上任务,ASA设备为管理用户提供了以下与之交互的连接方式. 通过异步Console线缆连接到CLI.通过Telnet会话连接到CLI.通过安全壳(SSH)版本1.x或版本2连接到CLI.通过Web浏览器连接到自适应安全设备管理器(ASDM).除了以上所介绍的,管理员

Nginx服务器中的重定向配置参考指南_nginx

rewrite命令nginx的rewrite相当于apache的rewriterule(大多数情况下可以把原有apache的rewrite规则加上引号就可以直接使用),它可以用在server,location 和IF条件判断块中,命令格式如下: rewrite 正则表达式 替换目标 flag标记 flag标记可以用以下几种格式: last – 基本上都用这个Flag. break – 中止Rewirte,不在继续匹配 redirect – 返回临时重定向的HTTP状态302 permanent

nginx 301重定向正确实现方法

nginx重定向规则详细介绍 rewrite命令 nginx的rewrite相当于apache的rewriterule(大多数情况下可以把原有apache的rewrite规则加上引号就可以直接使用),它可以用在server,location 和IF条件判断块中,命令格式如下: rewrite 正则表达式 替换目标 flag标记 flag标记可以用以下几种格式: last – 基本上都用这个Flag. break – 中止Rewirte,不在继续匹配 redirect – 返回临时重定向的HTTP