Nginx重写,包括其他页面?

时间:2014-12-27 12:49:41

标签: php nginx url-rewriting

我在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有问题吗?

感谢您的帮助

1 个答案:

答案 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不是这样的。检查所有重写是否真的符合您的要求(而不是更多)。