Nginx拒绝所有文件/嵌套文件,并将所有请求转发到index.php

Nginx拒绝所有文件/嵌套文件,并将所有请求转发到index.php,nginx,Nginx,目标是阻止每个文件/嵌套文件以及根文件,并将所有流量转发到index.php,但静态目录或嵌套静态目录中的文件除外 这里是配置到目前为止,它重定向所有流量,但与阻止其他问题 listen 80 default_server; root "/Applications/MAMP/htdocs/test"; access_log /Applications/MAMP/logs/nginx_access.log; err

目标是阻止每个文件/嵌套文件以及根文件,并将所有流量转发到index.php,但静态目录或嵌套静态目录中的文件除外

这里是配置到目前为止,它重定向所有流量,但与阻止其他问题

listen               80 default_server;

root                 "/Applications/MAMP/htdocs/test";

access_log           /Applications/MAMP/logs/nginx_access.log;
error_log            /Applications/MAMP/logs/nginx_error.log;

# block hidden files
location ~ /\. {
    deny all;
}

# forward all traffic to index.php      
location / {
     index index.php;
     try_files $uri /index.php$is_args$args;
}


# block everthing else       
# location ~* ^\/.+$ { block all; }

# only allow files inside static directory (even from nested static)        
location ~* ^.*\/static\/.*$ {
    allow all;
}

试试这个:

location / {
    rewrite . /index.php last;
}

location ~ /\. {
    deny all;
}

location ~* /static/ {
    try_files $uri /index.php$is_args$args;
}

如果未找到从
静态
目录请求的文件,是否需要将请求重定向到
index.php
?或者只返回404HTTP错误?是重定向到index.phpI。我们已经尝试过这个-在根上得到一个空响应。空白页没有显示。您是如何处理PHP脚本的?PHP-FPM还是apache后端?无论如何,请尝试将
rewrite
指令的
break
标志替换为
last
(编辑了我的答案)。它似乎可以工作,但现在出现了另一个问题/some?foo=bar,显示500个内部服务器错误查询参数抛出500个内部服务器错误(跟随您的答案,break似乎不工作)你能简单地重写一下吗/index.php last