LINUX.ORG.RU
решено ФорумAdmin

nginx можно ли скрыть имя индексного файла

 ,


0

1

Чтобы не пускаться в пространные объяснения, приведу пример: хочется, чтобы запрос «GET /» брал из соответствующего каталога файл, например, index.php, скармливал его интерпретатору и отдавал клиенту результат. Разумеется, это делается с помощью параметра «index index.php», здесь проблем нет. Но ещё хочется, чтобы «GET /index.php» при этом возвращал 404 или 403. Также должно работать и для запросов с параметрами, и не только в корне т.е. «GET /form/?param=value» должно работать, а «GET /form/index.php?param=value» - нет. Если это невозможно в лоб, тогда ещё один вопрос: а имеет ли возможность клиент на своей стороне «подсмотреть» имя индексного файла? То есть увидеть, что на его запрос «GET /» ему «отдали» файл /index.php ? Если такая информация нигде не передаётся, тогда можно решить вопрос присвоением индексному файлу «криптографического» имени, которое никто никогда в адресной строке не введёт.

Можно - используй регулярку в location

alozovskoy ★★★★★ ()

Ребята, я, в общем, в курсе, что там регулярные выражения можно. Но ведь вопрос в том, что для «GET /» location вычисляется не от «/», а от «/index.php». Соответственно, никакая регулярка не позволит разделить запросы «GET /» и «GET /index.php», потому что в эту регулярку приходит одна и та же строка.

shamus24 ()

В общем, додумался так как. Регулярные выражения помогают, но не сильно. Смысл в том, что слово index не используется вообще, cgi_pass настраивается для /, а имя индексного файла дописывается к uri непосредственно в строке вызова интерпретатора. Ну и, понятно, прописывается ответ 404 или 403 для location, указывающего на исходный файл.

shamus24 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.