Nginx: 확장 없는 PHP 페이지가 작동하도록 설정하는 구성

Nginx: 확장 없는 PHP 페이지가 작동하도록 설정하는 구성

nginx로 첫 번째 웹사이트를 설정하려고 하는데 확장 기능이 없는 PHP 페이지를 작동시킬 수 없는 것 같습니다. 내 페이지를 /aboutme.php다음과 같이 표시하고 싶습니다 ./aboutme 또는/aboutme대신 에 내 URL을 변경하여 /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_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 구성에 정의됨) 해당 디렉터리에 액세스할 수 있는지 확인해야 합니다.

관련 정보