Подтвердить что ты не робот

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

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

Пример

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

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

Любые предложения?

4b9b3361

Ответ 1

Самый простой способ - создать файл .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

Ответ 2

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

  • Измените файл Windows Host - C:\Windows\System32\drivers\etc\hosts
  • Отредактируйте файл Apache vhosts - Drive-Letter:\xampp\apache\conf\extra\httpd-vhosts.conf
  • Добавить файл htaccess в папку laravel/public (если его еще нет)
  • Перезапустить сервер 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 в "общедоступной" папке.
  • Чтобы перейти на страницу About, я думаю, что адрес будет http://laravel.dev/about

Ответ 3

Переместите содержимое папки /public вниз.

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

Ответ 4

Наилучший подход: я не буду рекомендовать удаление public, вместо этого на локальном компьютере создайте виртуальный хост, укажите на публичный каталог, а на удаленном хостинге измените public на public_html и укажите свой домен на этот каталог. Причина в том, что весь ваш код laravel будет защищен, потому что он на один уровень ниже вашего публичного каталога :)

МЕТОД 1: Я просто переименую server.php в index.php, и он работает

МЕТОД 2:

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

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

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

  1. переместить все файлы из публичного каталога в корень /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/

Ответ 5

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

Ответ 6

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

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

- Тоз это!!!

Ответ 7

Я тоже борюсь с этой проблемой, но я нашел простое решение, которое требует только создать другой .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]

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

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

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

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

Ответ 8

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

<IfModule mod_rewrite.c>
RewriteEngine On

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

Ответ 9

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

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

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

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

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

Ответ 10

просто в простой шаг, который я сделал в laravel 5 make.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 (порт может меняться)

Ответ 11

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

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

Ответ 12

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

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

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

http:://localhost:8000

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

См. официальное руководство, чтобы узнать больше: http://php.net/manual/en/features.commandline.webserver.php

Ответ 13

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

Ответ 14

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

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

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

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

Ответ 15

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

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

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

От = >

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

От = > '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>

Ответ 16

Необходимо удалить публичный сегмент в приложении 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__.'/..',

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

Ответ 17

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

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

Ответ 18

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

Ответ 19

если вы удаляете публикацию с 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';

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

Ответ 20

Об этом уже много раз спрашивали. У меня такая же проблема. Я решил это с помощью vhosts и.htaccess файлов. Я хотел написать о решении как на XAMPP на Windows, так и на установку LAMP на Ubuntu. Моя конфигурация на окнах: моя цель состояла в том, чтобы добраться до моего приложения, введя URI ниже

http://localhost/subdir

c:\xampp\htdocs\subdir\ # this was laravel root directory
c:\xampp\apache\conf\extra\httpd-vhosts.conf # this virtual hosts file

Я использовал оригинальный файл.htaccess с веб-сайта Laravel (и помните, что файл.htaccess должен находиться в публичном каталоге), но я просто добавил одну строку, которая

RewriteBase /subdir (just below RewriteEngine On)

Кроме того, в файле httpd-vhosts вы должны добавить псевдоним подкаталога так:

Alias /subdir
"C:/xampp/htdocs/subdir/public"
<Directory "C:/xampp/htdocs/subdir/public">
  Order allow,deny
  Allow from all
  Options All
  AllowOverride All
  Require all granted
</Directory>

Надеюсь, все понятно с моим объяснением. Этот ответ может быть легко применен в Unix-системах.