如何在Nginx位置使用像/page/.*/page/这样的正则表达式

时间:2018-02-28 05:22:27

标签: nginx nginx-location

网址示例:

http://test.com/test/page/4?-test?o?o_html/page/100/page/2/page/3/page/4/page/4/page/2/page/106/page/107/page/2/page/3/page/4/page/108/page/3/page/2/page/3/page/4&-test

我想使用nginx位置来禁止它。 但是我发誓,我在http://nginx.viraptor.info/

中尝试了不同的规则

location ~ /page/.*/page/ { return 403; }

location ~* \/page/.*/page/ {
location ~* /page/\.*/page/ {

他们都没有工作......

我发现只使用/ page /工作了。

location ~* /page/ {

但是当我添加。* / page / like:

location ~* /page/.*/page/ {

没有用......

现在我使用php来判断url:

if (preg_match ("/\/page\/.*\/page\//i", $_SERVER["REQUEST_URI"]))

请告诉我如何在nginx conf位置使用正则表达式。*我想使用nginx。

1 个答案:

答案 0 :(得分:1)

第一个?之后的所有内容都是URI参数,它们不是URI的一部分,因为这样的位置匹配永远不会起作用。如果有一个允许你在Nginx中执行此操作的解决方案,它将是一个kludge,你应该像你所说的那样在你的脚本中执行这种级别的检查。

请参阅:https://serverfault.com/questions/811912/can-nginx-location-blocks-match-a-url-query-string