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时 页面也可正常显示
为什么会出现这样的问题,应该如何解决

4个回答

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

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

kuashidai
从此以后要写博文 测试了一下 不行的 我已经把配置文件贴上去了 您看看是哪里的问题?
接近 5 年之前 回复

好像不行的 我的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的形式是可以的图片说明

kuashidai
从此以后要写博文 回复路边摆摊的: 我自己定义了myweb.conf文件 然后在这个文件里定义的重写规则
接近 5 年之前 回复
rogeracer
路边摆摊的 你的完整配置里怎么看不到你问题中的内容?
接近 5 年之前 回复
rogeracer
路边摆摊的 你的完整配置里怎么看不到你问题中的内容?
接近 5 年之前 回复
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 正则表达式规则定义:图片说明 不过按照您写的那样还是不行

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问