Я пытаюсь, чтобы 2 сайта работали по одному адресу,
Я хочу, чтобы все запросы на my.website.com/test_slim
и каждый my.website.com/test_slim/anything/following
были направлены на /var/www/html/test_slim/src/public/index.php
.
Я хочу, чтобы все остальное (my.website.com/
, my.website.com/foo
, my.website.com/bar/baz
...) служило обычными файлами PHP в /var/www/html/whatever/file/according/to/url/index.php
Теперь, это мои конфигурации сервера:
В /etc/nginx/site-enabled/my-default
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
}
В /etc/nginx/sites-enabled/test_slim
server {
listen 80;
server_name _;
index index.php;
error_log /var/www/html/test_slim/error.log;
access_log /var/www/html/test_slim/access.log;
root /var/www/html/test_slim/src/public;
location /test_slim/ {
try_files $uri /index.php$is_args$args;
}
location ~ \.php {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi.conf;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_index index.php;
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
}
}
Но на самом деле я получаю:
- Запрос
localhost/
выполнить /var/www/html/index.html
, как хотел.
- Запрос на
localhost/toto
выполнить /var/www/html/toto/index.html
как и хотел.
- Запрос на
localhost/test_slim
загрузок the /var/www/html/test_slim/src/public/index.pxp
- Запрос по
localhost/test_slim/hello
возвращает нам страницу с ошибкой Nginx (404, если папка hello
не существует, 403, если она существует).
- Запрос на
localhost/test_slim/src/public/
выдать файл /var/www/html/test_slim/src/public/index.php
.