#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$
блока.