Nginx: настройка конфигурации для работы php-страниц без расширений

Nginx: настройка конфигурации для работы php-страниц без расширений

Я пытаюсь настроить свой первый веб-сайт с помощью 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с 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 not found», если я захожу на «/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), получить доступ к этим каталогам.

Связанный контент