Nginx:設定配置以使無擴展的 php 頁面運作

Nginx:設定配置以使無擴展的 php 頁面運作

我正在嘗試使用 nginx 設定我的第一個網站,但我似乎無法使無擴展的 php 頁面正常工作。我希望我的頁面/aboutme.php顯示為/aboutme 或者我只想將我的網址更改為/aboutme而不是/aboutme.php並使它們起作用。我設法透過.htaccess以下編輯使最後一個場景在 CPanel 託管上工作:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [L, QSA]

但是,如果我.htaccess使用線上工具將程式碼轉換為 nginx,則不起作用。我也嘗試編輯我的nginx.conftry_files沒有extensionless-php成功,我得到404 。nginx.conftry_filesextensionless-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 配置中定義)是否可以存取這些目錄。

相關內容