Laravel 4 удаляет публикацию из URL

Итак, я запускаю xampp в Windows. В настоящее время я пытаюсь познакомиться с картой laravel. Теперь, когда это указано. Как я могу получить доступ к моему приложению / веб-сайту laravel прямо в корне?

Пример,

  • То, что я сейчас делаю, это localhost / laravel / public / about (чтобы увидеть страницу about)
  • Что я хочу сделать: localhost / laravel / about

Какие-нибудь хорошие решения для этого? мне нужно добавить файл .htacess в корневую папку laravel? (а не публичный).

Какие-либо предложения?

Самый простой способ – создать файл .htaccess в вашем корне Laravel со следующим содержимым:

 <IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^(.*)$ public/$1 [L] </IfModule> 

Он должен быть перенаправлен легко.

Ссылка: https://coderwall.com/p/erbaig/laravel-s-htaccess-to-remove-public-from-url

Вот как я это сделал.

  1. Измените файл Windows Host – C: \ Windows \ System32 \ drivers \ etc \ hosts
  2. Отредактируйте файл Apache vhosts – Диск-письмо: \ xampp \ apache \ conf \ extra \ httpd-vhosts.conf
  3. Добавьте файл htaccess в папку laravel / public (если его еще нет)
  4. Перезапустить сервер Apache Xampp

Windows может быть реальной PITA при попытке редактировать файл Hosts из-за контроля учетных записей пользователей. Поскольку я работаю над всеми видами небольших хобби проектов, я должен постоянно редактировать этот файл, так что это то, что я делаю.

  • Установите PSPad. Он загружается очень быстро, и вы можете добавлять файлы для удобной загрузки / редактирования. Sublime Text также хорошо работает, если вы загрузите два файла, упомянутых выше, и сохраните рабочее пространство в качестве нового проекта.
  • Щелкните правой кнопкой мыши на ярлыке программы PSPad (или другого редактора) и выберите «Запуск от имени администратора». Вы не можете сохранять изменения в файле Hosts, если вы этого не сделаете.
  • Откройте файл Windows Host в редакторе. Этот файл не имеет расширения файла, поэтому вам нужно выбрать «Все файлы» в диалоговом окне «Открыть файл», чтобы увидеть файл.
  • В нижней части файла добавьте следующее:

     127.0.0.1 laravel.dev 

    Это указывает Windows указывать веб-браузер на localhost всякий раз, когда вы вводите laravel.dev в адресную строку браузера.

  • Сохраните файл.
  • Откройте файл xampp Apache httpd-vhosts.conf.
  • В нижней части файла добавьте следующее: (Я предполагаю, что xampp установлен в корне диска D:

     <VirtualHost *:80> ServerName laravel.dev DocumentRoot "D:/xampp/htdocs/laravel/public" <Directory "D:/xampp/htdocs/laravel/public"> </Directory> </VirtualHost> 
  • Добавьте файл htaccess в свою папку laravel / public (если его еще нет). Я думаю, что файл htaccess по умолчанию, который поставляется с L4, выглядит так:

     Options -MultiViews RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] 
  • Перезагрузите сервер apache xampp.
  • Откройте веб-браузер и введите адресную строку – http://laravel.dev
  • Это приведет вас к файлу index.php в «общедоступной» папке.
  • Чтобы перейти на страницу «О себе», я думаю, что адрес будет http://laravel.dev/about

Переместите содержимое папки / общедоступной папки вниз.

Вам нужно будет обновить строки include в index.php, чтобы указать на правильное местоположение. (если он понижен на уровне, удалите «../»).

ОБНОВЛЕНИЕ: этот метод также работает с Laravel 5

Вот моя структура каталогов,

 /laravel/ ... app ... bootstrap ... public ... etc 

Следуйте этим простым шагам

  1. переместить все файлы из общего каталога в root / laravel /
  2. теперь нет необходимости в общедоступном каталоге, поэтому, возможно, вы можете удалить его сейчас
  3. теперь откройте index.php и выполните следующие замены

требуется DIR . '/ .. / bootstrap / autoload.php';

в

требуется DIR . '/ bootstrap / autoload.php';

а также

$ app = require_once DIR . '/ .. / bootstrap / start.php';

в

$ app = require_once DIR . '/ bootstrap / start.php';

  1. теперь открываем bootstrap / paths.php и изменяем путь к общедоступной директории:

'public' => DIR . '/ .. / public',

в

'public' => DIR . '/ ..',

и все, теперь попробуйте http: // localhost / laravel /

Установите для корневого каталога документ для Apache в общую папку, а не в папку laravel. Это самый простой метод и рекомендуется для производственных сред.

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

Сам .htaccess должен содержать следующее:

 RewriteEngine On RewriteCond %{HTTP_HOST} ^{yoursite}.{extension} [NC] RewriteRule (.*) http://www.{yoursite}.{extension}/$1 [R=301,L] RewriteCond %{REQUEST_URI} !public/ RewriteRule (.*) /public/$1 [L] 

Полная система продолжает работать, но перенаправляется в / общую папку.

Вот как я решил проблему для себя.

Надеюсь, поможет!

Приветствия.

Добавьте следующий код в файл htaccess. Это может помочь вам.

 <IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^(.*)$ public/$1 [L] </IfModule> 

Добавьте следующий код в свой .htaccess (если не существует, создайте .htaccess в корневом каталоге laravel)

 <IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^(.*)$ public/$1 [L] </IfModule> 

Источник: http://tutsnare.com/remove-public-from-url-laravel/

в Source вы также получите другой способ сделать то же самое.

Обновление: предпочтительный способ сделать это – внести изменения в структуру каталогов, которые объясняются в исходном URL-адресе.

Я использую L5, это работает для меня хорошо:

  1. Переименуйте server.php в корневую папку Laravel в index.php
  2. скопируйте файл .htaccess из / общедоступного каталога в корневую папку Laravel.

-Это это !!!

просто в простой шаг, который я сделал в laravel 5, сделайте .htaccess, как это, в папке laravel

 <IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews </IfModule> RewriteEngine On # Redirect Trailing Slashes... RewriteRule ^(.*)/$ /$1 [L,R=301] # Handle Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ ./index.php [L] </IfModule> 

затем переименуйте файл server.php в index.php

что он будет работать

или если вы просто занимаетесь местной разработкой

запустить этот comman php artisan serve

он запустит локальный сервер на localhost:8000 (порт может меняться)

Вы можете использовать символические ссылки или отредактировать файл httpd.conf .

Проверьте мой ответ на другой подобный вопрос. Надеюсь, что это поможет.

Если вы не хотите испытывать стресс при настройке файла .htaccess , вы можете использовать встроенный сервер PHP, выполнив следующие действия:

  1. Из командной утилиты, cd в laravel\public
  2. Запуск: php -S localhost:8000

После того, как вы сможете получить доступ к своему сайту, перейдите по ссылке:

http:://localhost:8000

работает без добавления public

Подробнее см. В официальном руководстве: http://php.net/manual/en/features.commandline.webserver.php

Перейдите в папку проекта с помощью cmd и введите «php artisan serve». Теперь перейдите к: localhost: 8000

Я нашел поток geart для работы с laravel localy.

Что вы можете сделать, так это немного настроить xampp. В файле httpd.conf вашего xamp вы должны найти документ DocumentRoot и <Directory> . Измените корневой каталог на свою общую папку laravel и перезапустите apache. Поскольку, когда вы можете легко получить доступ к своему проекту, просто введите localhost. Теперь, если вы хотите, вы можете изменить свой файл хоста и переписать локальные DNS, например: 127.0.0.1 example.laravel.com и теперь вы можете получить доступ к своему проекту с помощью реального URL-адреса. Это может выглядеть немного сложно, но это не так.

Альтернативой этому может служить php artisan serve . Вы можете запускать сервер на разных портах и ​​при перезаписывании файлов хостов.

Вы можете добавить некоторые функции, чтобы еще больше улучшить рабочий процесс, например, vagrant или ngrok . Вы можете поделиться своим проектом с живой презентацией (скорость может быть проблемой здесь).

Необходимо удалить публичный сегмент в приложении larvel4

Laravel 4 требует, чтобы ваш код приложения был на один уровень выше, чем у веб-корня, и это вызывает проблемы для некоторых разработчиков, которые застряли на общем хостинге, и это не позволяет такую ​​настройку. На самом деле очень легко обойти это. Я читал, что некоторые специфические пакеты L4 могут иметь проблемы с настройкой, подобной этой, но я не испытывал ничего подобного в любом пакете.

Поэтому сначала установите L4 где угодно. Мне понравилась статья Niall о том, как поддерживать базовое приложение L4 в актуальном состоянии, поэтому идите и проверьте это: Установка и обновление Laravel 4

Я считаю, что для этого примера достаточно просто клонировать репо (если у вас есть композитор, установленный глобально, если нет, перейдите на страницу http://getcomposer.org/ ):

 git clone -b develop git://github.com/laravel/laravel.git app_name 

Установка php-композитора

Обратите внимание, что мы клонируем ветку разработки, так как L4 все еще находится в стадии бета-тестирования.

Поэтому, чтобы удалить «общедоступную» часть из вашего URL-адреса, просто переместите все файлы и папки из общедоступного в свой корневой каталог приложения, и вы получите такую ​​структуру папок, как это:

 /app /bootstrap /packages (copied from /public) /vendor .htaccess (copied from /public) artisan composer.json favicon.ico (copied from /public) index.php (copied from /public) robots.txt (copied from /public) server.php 

Теперь нам нужно отредактировать наши пути в index.php:

 require __DIR__.'/bootstrap/autoload.php'; $app = require_once __DIR__.'/bootstrap/start.php'; 

А затем просто установите публичный каталог в файл /bootstrap/paths.php:

 'public' => __DIR__.'/..', 

это мое предложение

Вам нужно сделать следующее:

  1. сначала скопируйте все содержимое общедоступного каталога в свой корневой каталог, то есть доведите содержимое общей папки 1 вверх.

  2. изменить содержимое index.php

From =>

 require __DIR__ . "/../bootstrap/autoload"; $app = require_once __DIR__ . "/../boostrap/start.php" 

To =>

  "require __DIR__.'/bootstrap/autoload.php';" "$app = require_once __DIR__.'/bootstrap/start.php'; 

а также содержимое bootstrap / paths.php

From => 'public' => __DIR__.'/../../',

To => 'public' => __DIR__.'/..',

3. Затем, наконец, создайте файл .htaccess в корневом каталоге и напишите это.

 <IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews </IfModule> RewriteEngine On RewriteRule ^(.*)/$ /$1 [L,R=301] RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </IfModule> 

Простые шаги:

  1. Переименуйте server.php (в корневой каталог) в index.php
  2. Скопировать файл .htaccess из общего каталога в корневой каталог

переименуйте server.php в index.php и скопируйте index.php .htaccess из /public . Если вы отправляете свое приложение онлайн, просто измените DocumentRoot на общедоступный.

если вы удаляете публикацию с url, сначала перенесите файлы index.php и .htaccess из общей папки в корень laravel и измените файл index.php

требуется DIR. '/ .. / bootstrap / autoload.php'; $ app = require_once DIR. '/ .. / bootstrap / start.php';

в

требуется DIR. '/ bootstrap / autoload.php'; $ app = require_once DIR. '/ bootstrap / start.php';

и запустить программу