nginx的伪静态rewrite规则,匹配栏目目录没有斜杠不能访问
我的rewrite是这样的rewrite^/(.*)(.*)/$/index.php?m=content&c=index&a=lists&categorydir=$1&c...
我的rewrite是这样的
rewrite ^/(.*)(.*)/$ /index.php?m=content&c=index&a=lists&categorydir=$1&catdir=$2 last;
访问http://192.168.1.101/news/china/ 就会跳转到对应的列表页,但是如果url最后没有斜杠的话,直接404,所以我在下面又加了一条
rewrite ^/(.*)(.*) /index.php?m=content&c=index&a=lists&categorydir=$1&catdir=$2 last;
这样目录最后没有斜杠也可以访问了。但是问题来了,我首页打不开了,访问首页直接被解析到了列表页的路径然后因为获取不到参数报错,请问怎么解决这个问题? 展开
rewrite ^/(.*)(.*)/$ /index.php?m=content&c=index&a=lists&categorydir=$1&catdir=$2 last;
访问http://192.168.1.101/news/china/ 就会跳转到对应的列表页,但是如果url最后没有斜杠的话,直接404,所以我在下面又加了一条
rewrite ^/(.*)(.*) /index.php?m=content&c=index&a=lists&categorydir=$1&catdir=$2 last;
这样目录最后没有斜杠也可以访问了。但是问题来了,我首页打不开了,访问首页直接被解析到了列表页的路径然后因为获取不到参数报错,请问怎么解决这个问题? 展开
3个回答
展开全部
这个是你的真实路径
/index.php?m=content&c=index&a=lists&categorydir=news/china/ &catdir=news/china/
你访问页面应该是直接输入http://192.168.1.101,网站会自动访问/news/china/这个指定目录或者说是访问/news/china/index.php,但是你指定的是目录而不是文件,如果你去掉/那么访问的是192.168.1.101/news/china这个文件了,他就找不到,所以肯定访问不了
/index.php?m=content&c=index&a=lists&categorydir=news/china/ &catdir=news/china/
你访问页面应该是直接输入http://192.168.1.101,网站会自动访问/news/china/这个指定目录或者说是访问/news/china/index.php,但是你指定的是目录而不是文件,如果你去掉/那么访问的是192.168.1.101/news/china这个文件了,他就找不到,所以肯定访问不了
展开全部
这个是很显然的事情,原因在于你的rewrite规则是"^/(.*)(.*)/$" 这样的话就是必须以/结尾的请求才会转发。因此会出现你说的第一种情况。
#首页:
rewrite "^/+" /index....... break;
#其它页面
rewrite "^/([^/]*)([^/]*)" index.php break;
#首页:
rewrite "^/+" /index....... break;
#其它页面
rewrite "^/([^/]*)([^/]*)" index.php break;
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
请贴全一下你的配置文件,最后一个/有或者没有使用问号(?)来解决,多看看正则对你会很有帮助
rewrite ^/(.*)(.*)/?$ /index.php?m=content&c=index&a=lists&categorydir=$1&catdir=$2 last;
rewrite ^/(.*)(.*)/?$ /index.php?m=content&c=index&a=lists&categorydir=$1&catdir=$2 last;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询