Nginx重写以防止PHP文件直接访问

时间:2018-02-17 12:09:45

标签: nginx url-rewriting

我正在尝试设置一些重写 (1).com / images / *会自然加载 (2).com / *将被重写为.com / loader.php?control = * 但是下面的代码完全可以工作,除了它将执行.com / config.php而不是将其重写为.com / loader.php?control = config.php

如何防止重写被重写?我只想要执行.php文件,如果它是loader.php或者在images文件夹中。 (已经尝试了几个小时)

server {
        listen       80;
        root /mnt/web/test_com/public_html;
        server_name test.com;
        index  index.html index.php index.htm;
        location ~ .php(.*)$ {
                fastcgi_pass  unix:/tmp/php-70-cgi.sock;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  $DOCUMENT_ROOT$fastcgi_script_name;
                fastcgi_param PATH_INFO $2;
                include fcgi.conf;
        }
        location / {
                 rewrite ^/(.*)$ /loader.php?control=$1 last;
        }
        location /images/ {
        }
}

谢谢!

1 个答案:

答案 0 :(得分:0)

您应该查看try_files指令

  

与return和rewrite指令一样,try_files指令放在服务器或位置块中。作为参数,它需要一个或多个文件和目录的列表以及最终的URI

阅读nginx博客上写的整篇博文: https://www.nginx.com/blog/creating-nginx-rewrite-rules/