Nginx阻止访问php文件

时间:2017-11-19 16:24:30

标签: php nginx url-rewriting fastcgi

我创建了一个简单的php文件来显示从我的MYSQL数据库获取的信息。在此之后,我在Nginx中使用重写规则使链接seo友好并屏蔽提取它的.php文件。

Ex:http://localhost/myfile.php?seo=how-to-install-linux 重写规则后,我可以访问它:

http://localhost/how-to-install-linux

我的重写规则是:

location / {
rewrite ^/([a-zA-Z0-9_$\-]+)$ /myfile.php?seo=$1 last;
rewrite ^/(.*)/$ /$1 permanent; <- just to block trailing slash
}

我的问题是我也想阻止任何直接访问我的php文件,我只想让seo友好的网址工作。

location = /myfile.php {
deny all;
}

此规则阻止对我的php文件的完全访问,包括通过seo friendy url。 有没有办法让它适用于使用NGINX的seo友好版本? 我的其他设置是:

location ~ \.php$ {
try_files $uri =404;
include fcgi.conf;
fastcgi_pass unix:/var/run/ajenti-v-php7.0-fcgi-drnou-php7.0-fcgi-0.sock;

}

我只使用Nginx,没有安装Apache。

1 个答案:

答案 0 :(得分:4)

您可以使用internal指令阻止直接访问位置。有关详细信息,请参阅this document

例如:

location = /myfile.php {
    internal;
    include fcgi.conf;
    fastcgi_pass unix:/var/run/ajenti-v-php7.0-fcgi-drnou-php7.0-fcgi-0.sock;
}