我按如下方式设置了重写规则:
rewrite ^(www\.)*mysite\.com(/)*(index\.php)*$ /texts/mysite.com_page_24.html last;
它应该只捕获如下的调用:
www.mysite.com
www.mysite.com/
mysite.com
mysite.com/
www.mysite.com/index.php
但它也会捕获诸如以下的电话:
mysite.com/index.php?option=com_correct&task=view&id=5&Itemid=30
为什么我会得到这种奇怪的行为? ^
和$
标志清楚地表明开始和结束。
编辑:
在请求我不想捕获的内部链接时查看日志文件:
"GET /mysite.com/index.php?option=com_correct&task=view&id=5&Itemid=30 HTTP/1.0" 200 118 "-" "-"
经过进一步调查后,似乎nginx正在避免争论并且表现得好像是同一页面。如何设置nginx以避免参数,并将其视为不同的页面?
答案 0 :(得分:0)
是的,就像你已经发现的那样,重写不会影响查询字符串,你需要处理$args
字符串,简单的方法是将你的重写置于一个if条件中,表明args为空,试试像这样的东西
if ( $args = "" ) {
# your rewrite
}