在Nginx中隐藏index.php
和启用Pathinfo模式,可以通过配置重写规则来实现,以下是一个示例配置:
server { listen 80; server_name example.com; root /var/www/html; index index.php index.html index.htm; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { include snippets/fastcgiphp.conf; fastcgi_pass unix:/run/php/php7.4fpm.sock; # 根据你的PHP版本调整 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.ht { deny all; } }
解释:
1、根目录和索引文件:
root /var/www/html; index index.php index.html index.htm;
这里指定了网站的根目录和默认的索引文件。
2、主位置块:
location / { try_files $uri $uri/ /index.php?$query_string; }
这个配置尝试按顺序查找请求的文件或目录,如果都不存在,则将请求转发到index.php
,并保留查询字符串,这实现了Pathinfo模式。
3、PHP处理位置块:
location ~ \.php$ { include snippets/fastcgiphp.conf; fastcgi_pass unix:/run/php/php7.4fpm.sock; # 根据你的PHP版本调整 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
这个配置用于处理所有以.php
结尾的请求,通过FastCGI传递给PHPFPM进行处理,你需要根据你的PHP版本调整fastcgi_pass
指令。
4、禁止访问.ht
文件:
location ~ /\.ht { deny all; }
这条规则禁止访问任何以.ht
开头的文件,增强安全性。
Pathinfo模式说明:
Pathinfo模式允许你通过URL路径传递参数给PHP脚本,访问http://example.com/user/profile
时,PHP脚本可以解析出user
和profile
作为参数,这种模式通常用于框架如CodeIgniter、Laravel等。
注意事项:
确保你的PHPFPM服务正在运行,并且Nginx配置中的fastcgi_pass
指向正确的套接字或端口。
根据实际需求调整配置文件中的路径和参数。