nginx, когда ты делаешь запрос на /bla, если в root folder есть папка bla, он возвращает редирект (3xx) - это происходит автоматически без каких либо дополнительных конфигураций.
Чтобы этого не происходило, можно делать внутренее перенаправление для нужных адресов
условно rewrite ^/(bla|bla1|bla2|bla3)$ /$1/ last; - тогда при запросах на эти страницы будут сразу отдаваться index.html в этих папках, без каких либо редиректов для клиента.
Но вот если лень описывать каждый такой uri, можно ли как-то стандартное поведение такого автоматического редиректа изменить с 3xx редиректа на внутренее перенаправление?
А зачем вообще это делать? С точки зрения SEO /bla и /bla/ - это разные URI и ты по итогу дублируешь контент. Кроме того, если в этом index.html у тебя будут относительные ссылки - они перестанут работать. Почитай, что такое browsing context.
Мне пофиг на seo. Относительные не нужны
можно
С моей точки зрения ты хочешь странного. Нет, изменить такое поведение какими-то настройками нельзя. Так устроен исходный код: https://t.me/nginx_ru/229332
только что проверил - можно чутка магии напустить :)
О, пасиб. Исходники на этот счёт не копал
Как по мне это наркомания, такими вещами заниматься )
location / { try_fules $uri /index.html; }
того же самого можно добиться и rewrite'ом Но тут вопрос про то что, как бы сделать это универсально, не указывая каждую директорию, а чтобы для любой директории так было. Как выяснилось так не выйдет
Тогда наверное немного не так try_files $uri/index.html $uri $uri/ =404; Так по идее должно сработать.
Можешь попробовать пример выше. Мне кажется будет работать. Хотя с моей точки зрения это концептуально неправильный подход.
угу, я $uri/index.html намеренно опустил ... а вот $uri - тут лишнее
А если тебе вообще не надо, чтобы работали ссылки вида /bla/, а только вида /bla, тогда ещё короче: try_files $uri/index.html $uri =404; Но это всё будет работать только если это статика. С index.php такой номер не прокатит.
Почему это? Без него ни один файл кроме index.html не загрузится.
очепятка: не $uri, а $uri/
А, да, точно. $uri/ получается лишнее в любом случае, согласен.
Обсуждают сегодня