yaleksandr89
@yaleksandr89
PHP developer

Как открывать поддериктории с index.php не указывая этот файл в url?

Здравствуйте.

Что-то не могу составить конфиг для вирт.хоста. Имею проект где планирую сделать такую иерархию
/index.php
/project-1/index.php
/project-2/index.php
...


При открытие "корневого" url (site.com/) index.php конечно указывать не надо, но вот что бы открыть project-1 и project-2 index.php указывать необходимо (иначе будет открыто содержимое index.php находящееся в корне директории.

Настройка вирт. хоста

server {         
    listen 80;
    listen [::]:80;

    server_name pcl.col www.pcl.col;
    return 301 https:/$host$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    ssl_certificate /home/user/.ssl/pcl.col+1.pem;
    ssl_certificate_key /home/user/.ssl/pcl.col+1-key.pem;
    
    server_name www.pcl.col;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name pcl.col;
    root /www/pcl.col/;
    index index.php;

    location ~ \.php$ { 
        fastcgi_pass              unix:/run/php/php8.2-fpm.sock;
        fastcgi_split_path_info   ^(.+\.php)(/.*)$;
        include                   /etc/nginx/fastcgi_params;
        fastcgi_param             SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
      
    location / {
	try_files       $uri /index.php$is_args$args;
    }

    # Добавление этой секции не помогло
    #location /routing {
	#root            /www/pcl.col/project-1/;
	#index           index.php;
	#try_files       $uri /index.php$is_args$args;
    #}

    ssl_certificate /home/user/.ssl/pcl.col+1.pem;
    ssl_certificate_key /home/user/.ssl/pcl.col+1-key.pem;

    access_log /logs/pcl.col/access.log;
    error_log /logs/pcl.col/error.log;
}



Как скорректировать настройки вирт.хоста, что для открытия site.com/project-1 site.com/project-2 не требовалось указать index.php, то есть
  • site.com/project-1/index.php
  • site.com/project-2/index.php
  • Вопрос задан
  • 37 просмотров
Решения вопроса 1
@dodo512
root /www/pcl.col;

location / {
    try_files  $uri /index.php$is_args$args;
}

location /project-1 {
    try_files  $uri /project-1/index.php;
}

location /project-2 {
    try_files  $uri /project-2/index.php;
}

location ~ \.php$ {
    fastcgi_pass              unix:/run/php/php8.2-fpm.sock;
    fastcgi_split_path_info   ^(.+\.php)(/.*)$;
    include                   /etc/nginx/fastcgi_params;
    fastcgi_param             SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы