nginx перезаписывает вложенную папку в URL, не работает

#nginx

#nginx

Вопрос:

у меня есть сайт, который ранее был apache, но из-за некоторых обстоятельств я должен перейти на vps и вместо этого использовать nginx. и я в значительной степени новичок в nginx

моя структура папок

root/pages/[все мои файлы страниц, включая индекс]

я хочу удалить папку pages в URL,

итак, из

 1. mydomain.net/pages/index.php
2. mydomain.net/pages/subpage.php
  

Для

 1. mydomain.net
 2. mydomain.net/subpage
  

в apache я использую:

 RewriteEngine On

#remove php file extension-e.g. https://example.com/file.php will become https://example.com/file 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [NC,L] 

#remove folder name on link e.g. https://example.com/pages/file.php will become https://example.com/file.php 
RewriteRule ^$ pages/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ pages/$1 [NC,L] 
  

и теперь я попытался изменить ее на nginx с помощью этого кода

 server {


        root /var/www/html;
        index pages/index.php;
        server_name mydomain.net www.mydomain.net;

        # to run php
        location ~ .php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        }

        #deny htaccess
        location ~ /.ht {
                deny all;
        }                                                                                                                        
        
        # remove .php extension in url
        location @extensionless-php {
            rewrite ^(.*)$ $1.php last;
        } 
        
        # supposed to remove pages folder in url 
        location /pages
        {   
            rewrite ^/pages(/.*)$ $1 last;
        }  
}  
  

mydomain.net работает нормально

но почему-то я получил ошибку 404 в mydomain / subpage

Комментарии:

1. Просто установите root значение root /var/www/html/pages; , чтобы ничего не переписывать.

2. я пытался, но теперь мои css, javascript и изображения не работают.. потому что они находятся в папке за пределами папки pages..

3. В папке pages находятся только ваши PHP-файлы? Вы могли бы поместить root /var/www/html/pages; инструкцию внутри location ~ .php$ блока.