私はnginxで初めてのウェブサイトをセットアップしようとしていますが、拡張子のないphpページが機能しないようです。ページを/aboutme.php
次のように表示したいのですが/aboutme
または/aboutme
URLを の代わりにに変更して/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_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' にアクセスすると '.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 構成で定義) がそれらのディレクトリにアクセスできるかどうかを確認する必要があります。