Nginx: 拡張子のない PHP ページを動作させるための設定

Nginx: 拡張子のない PHP ページを動作させるための設定

私はnginxで初めてのウェブサイトをセットアップしようとしていますが、拡張子のないphpページが機能しないようです。ページを/aboutme.php次のように表示したいのですが/aboutme または/aboutmeURLを の代わりにに変更して/aboutme.php、動作させたいと思います。.htaccess次のように編集することで、最後のシナリオを CPanel ホスティングで動作させることができました。

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

ただし、.htaccessオンライン ツールを使用してコードを nginx に変換すると、機能しません。nginx.confとを編集しようとしましたtry_filesが、extensionless-php成功せず、404 が表示されます。nginx.confと なしのプレーンなコードtry_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' にアクセスすると '.php' で '/aboutme.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 構成で定義) がそれらのディレクトリにアクセスできるかどうかを確認する必要があります。

関連情報