![Nginx:配置设置以使无扩展名的 php 页面正常工作](https://linux22.com/image/719008/Nginx%EF%BC%9A%E9%85%8D%E7%BD%AE%E8%AE%BE%E7%BD%AE%E4%BB%A5%E4%BD%BF%E6%97%A0%E6%89%A9%E5%B1%95%E5%90%8D%E7%9A%84%20php%20%E9%A1%B5%E9%9D%A2%E6%AD%A3%E5%B8%B8%E5%B7%A5%E4%BD%9C.png)
我正在尝试使用 nginx 设置我的第一个网站,但似乎无法使无扩展的 php 页面正常工作。我希望我的页面/aboutme.php
看起来像/aboutme
或者我只想将我的 URL 改为/aboutme
而不是,并使它们正常工作。我设法通过如下/aboutme.php
编辑使最后一个方案在 CPanel 托管上运行:.htaccess
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [L, QSA]
但是,如果我.htaccess
使用在线工具将代码转换为 nginx,它不起作用。我还尝试编辑我的,但nginx.conf
没有成功,我得到了 404。我的平原没有和看起来像这样:try_files
extensionless-php
nginx.conf
try_files
extensionless-php
server {
listen localhost:8081;
server_name mywebsite.com; # I use my website here
root /usr/share/nginx/web/website1;
location / {
root /usr/share/nginx/web/website1;
index index.php index.html index.htm;
}
location ~ \.php$ {
root /usr/share/nginx/web/website1;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
编辑:我的问题被标记为重复,因此我尝试按照所说的方式进行配置,但没有成功,如果我访问“/aboutme”,我会收到“404 未找到”;如果我访问“/aboutme.php”,它会以“/aboutme.php”的形式打开,并带有“.php”:
server {
listen localhost:8081;
server_name mywebsite.com;
root /usr/share/nginx/web/website1;
location / {
try_files $uri $uri/ @extensionless-php;
index index.html index.htm index.php;
}
location ~ \.php$ {
try_files $uri =404;
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location @extensionless-php {
rewrite ^(.*)$ $1.php last;
}
}
答案1
您可以尝试使用以下方法:
location / {
try_files $uri $uri.php $uri/ =404;
index index.html index.htm index.php;
}
您还应该检查目录所有者/访问权限,并查看 nginx 和 php-fpm 正在运行的用户(在 nginx 配置中定义)是否可以访问这些目录。