Рейтинг:1

Nginx получает / из /index.php без «индекс каталога запрещен» в другом месте

флаг us

я нуждаюсь / быть показан как /index.php.

Прямо сейчас у меня есть

индекс index.php;
если ($request_uri = /index.php) {возврат 301/; }
location / { try_files $uri $uri/ =404; }

И все работает нормально, но есть некоторые ошибки, такие как

индекс каталога "/home/.../public_html/tmp/" запрещен

который я хочу удалить. Проблема здесь $ури/ в try_files $uri $uri/ =404;

https://stackoverflow.com/questions/19285355/nginx-403-error-directory-index-of-folder-is-forbidden/38046124#38046124

Ubuntu + Nginx: индекс каталога «/var/www/app/my-app/» запрещен

Но если я изменю это на try_files $uri = 404; или же try_files $uri /index.html index.php =404; тогда "/" просто перестает работать и показывает 404

Почему удаление $ури/ запретить показ index.php, если у меня есть индекс index.php;?

Как я могу установить это / должен проверить index.php а если нет index.php то просто показывает 404 не выкидывая ошибку "запрещено"?

Richard Smith avatar
флаг jp
На вашем веб-сайте есть более одного файла index.php?
флаг us
Может быть, их несколько, но меня интересует только корень `/index.php`. Теперь все работает, но с `индексом каталога "..." запрещено`, когда кто-то переходит на страницу, которой здесь нет, из-за `$uri/`.
Рейтинг:2
флаг jp

$ури/ срок в try_files заявление имеет две различные цели.

Если URI не заканчивается /, но ссылается на каталог, Nginx сгенерирует перенаправление 301, чтобы добавить /.

Если URI заканчивается на / и ссылается на каталог, будет вызвана функция индекса, что может привести либо к внутреннему перенаправлению на файл индекса, либо к ответу 403, если файл индекса не найден.

Одним из решений подавления ответа 403 без ущерба для других вещей является обработка URI, которые заканчиваются на / по-другому.

Например:

местоположение ~ /$ { 
    если (-f ${имя_файла_запроса}index.php) {
        переписать ^(.*)/$ $1/index.php последним;
    }
    вернуть 404;
}

Вышеупомянутое проверит наличие index.php внутри каталога и вернуть 404, если он не существует.

Рейтинг:0
флаг us

Может сработать следующий подход:

местоположение = /index.php {
    возврат 301/;
}

место расположения / {
    try_files $uri $uri//index.php =404;
}

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.