我创建了一个简单的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。
答案 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;
}