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;
这样目录最后没有斜杠也可以访问了。但是问题来了,我首页打不开了,访问首页直接被解析到了列表页的路径然后因为获取不到参数报错,请问怎么解决这个问题?
展开
 我来答
nxk88998
2018-05-04 · 超过62用户采纳过TA的回答
知道小有建树答主
回答量:224
采纳率:85%
帮助的人:52.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这个文件了,他就找不到,所以肯定访问不了
17哥
推荐于2018-05-06 · 菩提只向心觅,何劳向外求玄
17哥
采纳数:244 获赞数:1230

向TA提问 私信TA
展开全部
这个是很显然的事情,原因在于你的rewrite规则是"^/(.*)(.*)/$" 这样的话就是必须以/结尾的请求才会转发。因此会出现你说的第一种情况。

#首页:
rewrite "^/+" /index....... break;
#其它页面
rewrite "^/([^/]*)([^/]*)" index.php break;
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ninnycalf
2018-04-28 · TA获得超过233个赞
知道小有建树答主
回答量:209
采纳率:81%
帮助的人:93.6万
展开全部
请贴全一下你的配置文件,最后一个/有或者没有使用问号(?)来解决,多看看正则对你会很有帮助
rewrite ^/(.*)(.*)/?$ /index.php?m=content&c=index&a=lists&categorydir=$1&catdir=$2 last;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式