问题描述
- 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 正则表达式规则定义: 不过按照您写的那样还是不行