Как удалить «public / index.php» в larvel, созданный url?

В основном мне нужно удалить index.php или public/index.php из сгенерированного URL-адреса в laravel, обычно путь – localhost/public/index.php/someWordForRoute , он должен быть чем-то вроде localhost/someWordForRoute

htacces

 <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] 

приложение / Config / app.php

 'url' => 'http://localhost', 

как я могу это изменить?

Вариант 1: Используйте .htaccess

Если он еще не существует, создайте файл .htaccess в корневом каталоге Laravel. Создайте файл .htaccess корневом каталоге Laravel, если он уже не существует. (Обычно это находится в папке public_html )

Отредактируйте файл .htaccess, чтобы он содержал следующий код:

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

Теперь вы сможете получить доступ к веб-сайту без части «/public/index.php/».

Вариант 2. Переместите вещи в каталоге «/ public» в корневой каталог

Создайте новую папку в корневом каталоге и переместите все файлы и папку, кроме общей папки. Вы можете называть это тем, что хотите. Я буду использовать «laravel_code».

Затем переместите все из общего каталога и в корневую папку. Это должно привести к чему-то вроде этого: введите описание изображения здесь

После этого все, что нам нужно сделать, это отредактировать места в laravel_code/bootstrap/paths.php файле index.php .

В laravel_code/bootstrap/paths.php найдите следующую строку кода:

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

И измените их на:

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

В index.php найдите следующие строки:

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

И измените их на:

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

Источник: Как удалить / public / из URL в Laravel

Я пробовал это на Laravel 4.2

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

надеюсь это работает

ЗДЕСЬ ПРОСТЫЕ ШАГИ ДЛЯ УДАЛЕНИЯ PUBLIC IN URL (Laravel 5)

1: Скопировать все файлы из общей папки и пропустить их в корневой папке laravel

2: Откройте index.php и измените

Из

  require __DIR__.'/../bootstrap/autoload.php'; 

к

  require __DIR__.'/bootstrap/autoload.php'; 

А также

 $app = require_once __DIR__.'/../bootstrap/app.php'; 

к

 $app = require_once __DIR__.'/bootstrap/app.php'; 

В laravel 4 путь 2 – $app = require_once __DIR__.'/bootstrap/start.php'; вместо $app = require_once __DIR__.'/bootstrap/app.php';/app.php

Вот и все.

1) Проверьте, включен ли mod_rewrite. Перейдите в каталог /etc/apache2/mods-enabled и посмотрите, доступен ли rewrite.load . Если нет, включите его, используя команду sudo a2enmod rewrite Он включит модуль перезаписи. Если он уже включен, в нем будет показано, что сообщение « Module rewrite already enabled .
2) Создайте виртуальный хост для общедоступного каталога, чтобы вместо того, чтобы указывать http://localhost/public/index.php мы сможем использовать как http://example.com/index.php . [поэтому имя общедоступной папки будет скрыто]
3) Затем создайте .htaccess, который скроет index.php с вашего URL-адреса, который будет находиться внутри корневого каталога (общая папка)

 RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php?/$1 [L] 

Не путайте с другим вариантом этот сниппет, который я использую, и вам тоже будет полезно. Поместите ниже htacces в свой корень.

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

Перейдите в свой общий каталог и поместите еще один файл htaccess с фрагментом кода ниже

 <IfModule mod_rewrite.c> RewriteEngine On # Removes index.php from ExpressionEngine URLs RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?url=$1 [PT,L] </IfModule> 

Работает… !!!

Вероятно, это очень мало связано с Laravel и все, что связано с вашими конфигурациями Apache.

У вас есть доступ к вашей конфигурации сервера Apache? Если это так, проверьте это из документов:

В общем, вы должны использовать только файлы .htaccess, если у вас нет доступа к файлу конфигурации основного сервера. Существует, например, общее заблуждение, что аутентификация пользователя всегда должна выполняться в файлах .htaccess, а в последние годы – другое заблуждение, что директивы mod_rewrite должны входить в файлы .htaccess. Это просто не тот случай. Вы можете поместить конфигурации проверки подлинности пользователя в конфигурацию основного сервера, и это, по сути, предпочтительный способ сделать что-то. Аналогично, директивы mod_rewrite работают во многих отношениях лучше в конфигурации основного сервера.

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

Источник: документация Apache .

Причина, почему я упоминаю это в первую очередь, состоит в том, что лучше всего избавиться от .htaccess полностью, если можно, и использовать тег Directory внутри тега VirtualHost . При этом остальная часть будет предполагать, что вы придерживаетесь маршрута .htaccess по любой причине.

Чтобы сломать это, может произойти пара вещей:

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

  2. Ваш сервер не может разрешить .htaccess . Чтобы проверить это, перейдите в конфигурационный файл Apache. В современных сборках Apache это обычно не в одном файле конфигурации, поэтому убедитесь, что вы используете тот, который указывает на ваше приложение, где бы он ни существовал. + Изменить

     AllowOverride none 

    в

     AllowOverride all 

    В качестве последующих действий документы Apache также рекомендуют, чтобы в целях безопасности вы не делали этого для каждой папки, если собираетесь перейти на .htaccess для перезаписи. Вместо этого сделайте это для папок, которые вам нужно добавить .htaccess .

  3. У вас включен mod_rewrite ? Это может вызвать проблемы. Я заметил, что у вас есть тег вверху <IfModule mod_rewrite.c> . Попробуйте прокомментировать эти теги и перезапустите Apache. Если вы получите сообщение об ошибке, возможно, это связано с тем, что вам необходимо включить mod_rewrite : как включить mod_rewrite для Apache 2.2

Надеюсь это поможет. Я назвал некоторые из наиболее распространенных проблем, но есть несколько других, которые могут быть более мирскими или уникальными. Еще одно предложение на dev-сервере? Переустановите Apache. Если возможно, сделайте это из другого источника с хорошим учебным пособием.

Для Laravel 4 и 5:

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

Это оно !! 🙂

Laravel отправляется с довольно-таки URL-адресом .htaccess … вам должно быть хорошо, чтобы выйти из коробки … http://laravel.com/docs/installation#pretty-urls

Убедитесь, что mod_rewrite включен и что ваш домашний путь установлен в общий каталог вашего приложения.

  RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L] 

используйте это в .htaccess и перезапустите сервер

Надеюсь, это помогает, как и для меня.

 <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_URI} !^public RewriteRule ^(.*)$ public/$1 [L] </IfModule> 

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

Я только что установил Laravel 5 для проекта, и есть файл в корне, именуемом server.php. Просто измените его на index.php и он работает или в терминале, введите

$ cp server.php index.php

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

В соответствии с Laravel 5.3 вышеуказанные вещи не будут работать должным образом, но, пожалуйста, будьте спокойны и выполните следующие шаги:

Шаг 1. Перейдите в проект laravel
Шаг 2. Сделайте один случайный каталог / папку, например. laravelcode
Шаг 3. Переместите всю папку и файлы (кроме общей папки)
Шаг 4. Переместите всю папку и файлы, находящиеся в общей папке, в проект laravel
Шаг 5. Теперь в проекте laravel есть файл index.php, пожалуйста, откройте это и измените пути к папке для начальной загрузки в соответствии с новым путем, как ранее, это было «требуется DIR .» / .. / bootstrap / autoload.php '; теперь он станет «требовать DIR .» / laravelcode / bootstrap / autoload.php '; "

Это просто запустить ваш url без public и index.php, как показано ниже http: // localhost / blog /