2013-12-20 18 views
0

У меня есть веб-сервер с/usercp/и usercp.php. Я использую tryfiles и переписываю, чтобы посмотреть, существует ли файл file.php, иначе goo/file/(в моем случае file = usercp)nginx переписать с try_files 403

Вот мой nginx conf.

location/{ 
    try_files $uri $uri/ @extension-php; 
} 

location @extension-php { 
    rewrite ^(.*)$ $1.php last; 
} 

Это также делает site.com/usercp/ причиной ошибки 403. Есть идеи?

+0

Да, но /usercp/.php не существует. Вы должны рассмотреть возможность использования косой черты. Попробуйте это вместо 'rewrite^(. *) /? $ $ 1.php last;' – foibs

ответ

0

http://nginx.org/r/try_files

Что она делает это просто проверяет наличие файлов, а затем служит файл, который существует.

Вы требуете /usercp/. Таким образом, это то, что он попытается служить. Но вы, вероятно, не имеете autoindex on, поэтому список каталогов запрещен — 403 Forbidden.

1

Проблема заключается в том, что вы указали приоритет в индексировании папки по файлу php, если хотите сделать обратное, я рекомендую не использовать autoindex on, поскольку он предоставляет содержимое вашей папки и заменяет последние 2 элемента в файлах try_files, попробуйте это

location/{ 
    try_files $uri $uri.php $uri/; 
} 

PS:$uri/ всегда возвращает 403, если она не содержит индексный файл, указанный в index, потому что по умолчанию он запрещает папку список, вы должны либо поместить индексный файл, если это то, что вы собираетесь делать , или просто удалить все $uri/ от try_files так что он вернет 404 вместо 403

Смежные вопросы