Nginx: Konfiguration so eingerichtet, dass erweiterungslose PHP-Seiten funktionieren

Nginx: Konfiguration so eingerichtet, dass erweiterungslose PHP-Seiten funktionieren

Ich versuche, meine erste Website mit nginx einzurichten, und ich kann scheinbar keine erweiterungslosen PHP-Seiten zum Laufen bringen. Ich möchte, dass meine Seiten wie folgt /aboutme.phperscheinen/aboutme oderIch möchte meine URLs einfach in /aboutmeanstelle von ändern /aboutme.phpund sie zum Laufen bringen. Ich habe es geschafft, das letzte Szenario auf CPanel-Hosting zum Laufen zu bringen, indem ich es .htaccesswie folgt bearbeitet habe:

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

Wenn ich den Code jedoch .htaccessmit Online-Tools in nginx konvertiere, funktioniert es nicht. Ich habe auch versucht, meinen nginx.confmit zu bearbeiten try_files, aber extensionless-phpohne Erfolg, ich bekomme 404. Mein einfacher nginx.confohne try_filesund extensionless-phpsieht so aus:

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;
  }
} 

Bearbeiten: Meine Frage wurde als Duplikat markiert, daher habe ich versucht, sie wie angegeben zu konfigurieren, jedoch ohne Erfolg. Wenn ich „/aboutme“ besuche, erhalte ich die Meldung „404 nicht gefunden“. Wenn ich „/aboutme.php“ besuche, wird sie als „/aboutme.php“ mit „.php“ geöffnet:

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;
}
}

Antwort1

Sie können Folgendes versuchen:

location / {
    try_files $uri $uri.php $uri/ =404;
    index index.html index.htm index.php;
}

Sie sollten auch den Verzeichnisbesitzer/die Zugriffsberechtigungen überprüfen und prüfen, ob der Benutzer, unter dem nginx und php-fpm ausgeführt werden (definiert in der nginx-Konfiguration), auf diese Verzeichnisse zugreifen kann.

verwandte Informationen