настройка htaccess для laravel

Как оформить и настроить .htaccess для Laravel?

Я только что запустил проект Laravel 5.3 на живом сервере, и все идет хорошо, кроме одного.

Но моя проблема в том, что мои сайты работают по всем 3 различным URL.

Мой сервер Ubuntu 16.4.

website.com/ любое слово /index.php

мой .htaccess есть: (этот файл находится в корневой папке)

Но я просто хочу увидеть мой сайт с website.com Только URL.

Решение

Похоже, ваше приложение Laravel доступно через HTTP-псевдоним Apache. Следуй этим шагам

Попробуйте перейти к ожидаемому маршруту, добавьте его /index.php/ , в твоем случае: website.com/index.php/users , Если это работает (нет 404), то у вас проблема с конфигурацией модуля перезаписи Apache HTTP, вы должны выполнить следующие шаги.

Отредактируйте файл public / .htaccess.

Под линией RewriteEngine On добавлять RewriteBase / если файлы находятся в корневом каталоге, если в папке, как laravel затем добавьте RewriteBase /laravel/

Попробуйте перейти к существующему маршруту.

Удалить / public из вашего Laravel
создать виртуальный хост

идти к /etc/apache2/sites-available создать .conf файл или обновить 000-default.conf

Другие решения

Чтобы соответствовать только домашней странице, т.е. http://domainxyz.com/ вам нужно сопоставить пустой путь (так как mod_Rewrite удаляет начальный / ,

Попробуйте использовать это в своем .htaccess файл:

Убедитесь, что вы очистили свой кэш перед тестированием. Вы заметите, что я использовал R=302 Это временный редирект. Если перенаправление работает, и вы довольны им, переключите это на R=301 который является постоянным перенаправлением.

Этот код работал для меня. Это удалит расширение с вашего сайта, например .php и все. Попробуйте это один раз.

1. Я понимаю, почему вы пытаетесь изменить .htaccess, но это можно решить гораздо проще. Верните файл .htaccess обратно к стандарту Laravel.

2. Переместите все свои папки и файлы отдельно от общедоступных и убедитесь, что они находятся за вашей папкой HTML.

3. Переместите все ваши общие папки и файлы из общей папки в вашу HTML-папку.

4. Скажите laravel искать в вашей папке html вместо публичной, изменив файл server.php

Я считаю, что это решение намного проще, чем возиться с вами htaccess. Вы также гарантируете, что все файлы ядра Laravel не могут быть доступны из URL.

Другая проблема, с которой вы столкнулись (Внутренние страницы)

Вероятно, это связано с тем, что ваш apache не позволяет переопределить с помощью Laravels htaccess

Перейдите в командную строку вашего сервера и получите доступ к файлу apache2.conf

Читайте также:  установка ssd в ноутбук asus вместо hdd

источник

Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

#1 31.01.2018 16:03:19

Laravel 5.5. файл .htaccess

Laravel-5.5
PHP 7.0.27
Linux carrot x86_64
Server: nginx

Всем привет!
Можно ли в .htaccess файле настроить так,чтобы при обращении к проекту не было [public] в URL.
Точка входа в Laravel не корневой каталог, а папка [public] и сейчас у меня проект который на реальном сервере идет как

Я же хочу,чтобы сайт работал по:

Но нужно,чтобы не просто вырезалось `public`, а именно обращение шло правильно/
На локальной машине, когда я разрабатываю проект, я имею доступ к конфигурации сервера и на локалке, в конфигурационном файле прописал, где указываю, что корень проекта это [public] — DocumentRoot «my_domen_name/public».
На хостинге я такой возможноти не имею, поэтому можно ли так сделать только лишь через свой .htaccess и как должно это быть?

Сейчас мой .htaccess выглядит так:

источник

Установка Laravel

Установка Laravel, как это принято для вёб-движков, начинается со скачивания последней версии фреймворка. Последняя версия из третьей ветки — 3.2.14.

Laravel может находиться в любой папке на сервере, если к папке public предоставлен доступ извне — либо с помощью символической ссылки, либо настройкой виртуального хоста (см. ниже).

Основные папки Laravel могут быть даже разнесены, если в файле paths.php указано их новое размещение. Если paths.php не находится на один уровень выше public (т.е. в public/../paths.php ), то public/index.php нужно будет также немного изменить.

Назначение основных папок Laravel ( см. тж. настройку):

  • application — папка системного пакета — хранит общие настройки среды для подключения к БД, драйвер сессии, загрузчик языковых файлов, системная кодировка и язык и прочее.
  • bundles — папка сторонних пакетов (пакет — самодостаточная сборка скриптов, например, для рисования графиков или отправки e-mail). Каждый пакет содержится в своей подпапке, которая в свою очередь содержит почти те же папки и файлы, что и системный пакет (application).
  • laravel — PHP-скрипты самого фреймворка. Каждая папка соотносится с соответствующим пространством имён Laravel.
  • public — единственная папка, которая должна быть видна из интернета — содержит элементы оформления страниц — картинки, файлы CSS и JavaScript и т.д.
  • storage — папка с создаваемыми файлами — кеш, данные сессии, логи и т.д.
  • vendor — содержит сторонние библиотеки наподобии bundles, но в отличии от последней эти библиотеки никак не связаны в Laravel. Например, класс для генерации RSS-лент может размещаться здесь, тогда как пакет с интерфейсом к нему — в bundles.

Короткие URL

Так как всё общение с Laravel со стороны сервера происходит через папку public, то, если мы устанавливаем его в http://localhost/laravel/ , пути в браузере будут выглядеть как http://localhost/laravel/public/index.php/user/123/ . Однако это поведение по умолчанию (рассчитанное на работу на любом сервере), и его можно изменить.

Читайте также:  need for speed most wanted настройка джойстика

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

Если вы используете //((http:httpd.apache.org Apache с модулем mod_rewrite, то мы можем убрать index.php из пути. Для этого откройте файл application/config/application.php и установите параметр index в пустую строку:

Если вы оставите структуру папок Laravel прежней и public будет лежать там же, где paths.php , laravel и т.д. , то мы можем убрать public/ из пути. Есть несколько способов:

  • с помощью mod_rewrite — самый простой. Создайте в папке, куда вы извлекли архив (она содержит paths.php ), файл .htaccess и впишите туда эти строки:
  • директивами Alias или DocumentRoot — лучший вариант, если вы можете настраивать виртуальный хост в главном конфигурационном файле Apache ( httpd.conf ). Если вы располагаете Laravel в корне хоста (например, http://localhost/ ), то используйте DocumentRoot, иначе — Alias (требует mod_alias). Например:
  • символической ссылкой — доступно только на *nix-системах и только если у вас включена опция FollowSymLinks в настройках виртуального хоста (или вы можете её включить с помощью директивы PHP Options ). Обычно это самый оптимальный вариант, так как не затрагивает работу сервера, но вам нужен доступ к командной строке сервера. Для включения вам нужно сделать две вещи:
    1. Создать ссылку командой ls на папку public в папке виртуального хоста (его корня или подпапки, в зависимости от того, где будет виден фреймворк из сети). Например: sh ln -s /usr/local/www/laravel/public /home/mysite.ru/pub/mylaravel — сделает его доступным по адресу http://mysite.ru/mylaravel .
    2. Включить FollowSymLinks в httpd.conf или .htaccess :

Есть также ещё один вариант для быстрой настройки хоста под Laravel — не требует mod_rewrite (только mod_alias) и может использоваться при разработке, когда короткие URL не нужны:

Настройки и профили

Глобальные настройки «приложения» ( «application» ) на Laravel хранятся в папке application/config/. Она содержит PHP-файлы, возвращающие массивы параметров, которые могут быть вложенными, например:

Запятая после последнего элемента может быть опущена (как после another_key ). Настройки можно прочитать с помощью PHP Config :: get , передав строку вида: [пакет::]файл.ключ[.подключ[. ]] — например:

  • если код выше располагается в application/config/myconfig.php, то прочитать значение 2 можно строкой myconfig.key.subkey_2 .
  • для файла bundles/mybundle/config/myconfig.php то же значение доступно по строке mybundle::myconfig.key.subkey_2 .

В Laravel есть возможность использовать профили настроек — с их помощью можно один и тот же проект использовать на локальном хосте и загружать одновременно на производственный сервер. Если профиль определён настройки загружаются в два этапа:

  1. application/config/*.php
  2. application/config/PROFILE/*.php — совпадающие настройки перекрывают предыдущие
Читайте также:  мультитроникс 1031 сброс настроек

Профиль задаётся переменной среды LARAVEL_ENV, которую можно определить в Apache директивой SetEnv и прочитать функцией PHP Request :: env .

При разработке этой переменной принято присваивать значение local , а на производственном сервере — production . Вот как это делается в Apache (задаётся либо в записи виртуального хоста, либо в файле .htaccess в корне Laravel):

Для вёб-сервера nginx есть аналогичная директива: conf env LARAVEL_ENV = local

Если LARAVEL_ENV не определена профили не используются и загружаются только общие настройки (без подпапок).

Настройка

Итак, нам нужно задать основные настройки для нашего приложения. Если вы задали профиль с помощью переменной среды LARAVEL_ENV как было описано выше, то вместо изменения самого файла настроек скопируйте его в подпапку с именем профиля — например, для профиля «local» создайте папку application/config/local и скопируйте туда application/config/application.php и session.php.

Если вы не задавали профиль или хотите, чтобы настройки были применены для всех профилей, то изменяйте основной файл (такой как application/config/application.php).

В начале, при настройке URL, мы уже поменяли одну из них — index в application.php — теперь продолжим в том же файле:

  • изменим секретный ключ ( key ) — по важности для безопасности сервера этот параметр почти не уступает паролю от самого сервера, поэтому позаботьтесь о том, чтобы он не был известен третьим лицам. Это должна быть строка из 32 случайных символов (любых, а не только буквенноцифровых).
  • установим язык по умолчанию ( language ) — изначально это английский ( en ), мы можем сделать его русским ( ru ) — но для этого языковые файлы Laravel и установленных пакетов должны быть переведены.
  • зададим часовой пояс ( timezone ) — по умолчанию он установлен в UTC, но если мы хотим отображать московское время, то установим этот параметр в Europe/Moscow .

Также установим драйвер сессии в файле session.php (нам это пригодится в дальнейшем) — установите параметр driver в cookie или file .

Что дальше?

Laravel установлен и готов к работе — вы можете проверить это, перейдя к папку фреймворка ( http://localhost/laravel/ ) — должа появиться страница-приветствие по умолчанию. Если вместо неё у вас появляется ошибка 404 (страница не найдена) — короткие URL не были верно настроены.

Если у вас возникли вопросы можете задать их на нашем форуме.

Статистика: Символов — 7 860/6 663 без пробелов (6 222/5 275 без кода):, слов — 948

источник

Оцените статью
Adblock
detector