Привет. Я знаю несколько способов убрать public из урла в проекте на laravel.
1) htaccess
2) документ рут
3) Перенос файлов и изменение путей
Суть ситуации такая. Разрабатывается приложение, которое нужно залить сразу на много доменов на разных хостингах/vps/vds. Заливать будут разные юзеры, и заставлять каждого из них менять документ рут это не правильно. Перенос файлов и изменение путей - пути тоже разные, у кого-то public_html у кого-то public или еще что-то другое. Самым простым кажется вариант с htaccess. Но у этого варианта есть жёсткий минус, все урлы дублируются с /public (например site.ru/about имеет дубль site.ru/public/about). И вот я думаю, есть ли вероятность что такие урлы попадут в индекс и своим дублированием испортят сео оптимизацию, или если нигде нет ссылок на такие страницы с /public то можно использовать такой способ? Может есть еще какое-то решение?
Евгений Перин: символические ссылки в линуксе - это что-то типа ярлыков в винде, вы создаете символическую ссылку в виде html_public там, где сервер требует html_public, а на самом деле когда апач обращается к ней, он читает файлы из public ларавела. Погуглите.
Дмитрий Евграфович: спасибо, почитаю по этому. Я просто не понимаю как делаются cms на фреймворках. Поискал на гитхабе laravel cms, и везде идёт установка как laravel через консоль и композер... И прописывать базу вручную в env. Я вот хочу сделать cms чтобы юзер без танцев с бубном установил (при установке ввел в нудные поля название базы и пароль) и имел рабочее приложение, без необходимости прописывать ссылки, докуменрут и тд...
Евгений Перин: А, ну тогда этот способ не особо актуален будет, я думал вы на своих серверах ставить будете. А вы инсталлер octobercms смотрели? Хорошая штука, сам скачивает все что надо. если бы мне надо было написать инсталлятор, я бы сделал его таким.
https://yadi.sk/d/qi9LJC_DjKzNo вот htaccess для редиректа в папку паблик. Если нет проксирующего nginx для статики - все нормально будет работать. Если прокси есть - тогда надо настраивать Nginx. Но лучше все-таки на этапе инсталляции определить путь для ядра, путь для public_path() и прописать их оба в конфиге, ну и пути к статике писать через public_path(). А по пути для ядра (родительский, если тот доступен для записи и тот же, что у public, если нет) ставите фреймворк. Ну на вскидку такой вариант будет безопаснее переноса файлов из public в корень для всех пользователей.
Я это не ищу, я это знаю. Говорю же, заставить пользователя менять эти настройки вручную не очень хорошо. Представьте что вы устанавливаете cms и вас просят зайти в какой то файл и что-то там поменять. Не всем это понравится.
Для инсталятора. Это делается cms, нужно чтобы устанавливалась юзерами без танцев с бубном, без всяких симлинков, документрутов и тд... Чтобы был установочный скрипт куда пишутся доступы к базе данных и всё, на выходе готовый движок