我在Nginx中重写有一个很大的问题。 实际上,我的网站有多个网址重写,我刚发现它有问题。
网址重写样式为: 对于没有参数的网址
rewrite /booster-fin.html /booster-fin.php last;
和此,对于带参数的网址
rewrite /affichage-site-([0-9]+).html /affichage.php?site=$1 last;
它完美无缺,但我发现了一个问题 在我的网站上:
domain.xx/affichage-site-3.html
工作
但
domain.xx/oezfopjezffeznefzoifo-http:/affichage-site-3.html
也工作!!!!
我可以在 -http:/ 之前放置任何内容,在http:/之后我可以把它放到网站的任何现有页面 所以:
domain.xx/nginxrewritproblem-http:/index.html
工作(与domain.xx / index.html相同的页面)
我的配置或nginx有问题吗?
感谢您的帮助
答案 0 :(得分:0)
在重写的开头加^
(最后可能是$
):
rewrite ^/affichage-site-([0-9]+).html$ /affichage.php?site=$1 last;
^
表示网址必须以接下来的内容开头,$
表示必须以此结束。 http://regexone.com/lesson/10了解更多信息。
关于domain.xx/nginxrewritproblem-http:/index.html
的问题:这看起来在你的nginx.conf中有一些不好的重写,默认情况下nginx不是这样的。检查所有重写是否真的符合您的要求(而不是更多)。