Как я могу удалить"public/index.php "в URL-адресе, сгенерированном laravel?


В основном мне нужно удалить 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]

App/config/app.php

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

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

Author: cheloncio, 2014-05-24

14 answers

Вариант 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".

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

После этого все, что нам нужно сделать, это отредактировать местоположения в файле 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';

Источник: Как удалить /общедоступный/из URL-адреса в Laravel

 98
Author: Luzan Baral, 2018-07-04 07:47:32

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

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

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

 37
Author: Tejas Jadhav, 2014-10-25 10:46:11

ВОТ ПРОСТЫЕ ШАГИ, ЧТОБЫ УДАЛИТЬ PUBLIC В 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

Вот и все.

 12
Author: Khandad Niazi, 2017-04-06 19:56:35

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]
 10
Author: Orchid, 2014-11-27 10:25:25

Не путайте с другим вариантом фрагмент ниже, который я использую, и он также будет полезен для вас. Поместите приведенные ниже 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>

Он работает...!!!

 8
Author: Ankit Vishwakarma, 2016-01-19 16:50:20

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

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

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

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

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

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

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

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

  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

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

 5
Author: smcjones, 2017-05-23 12:02:51

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

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

 1
Author: Kisuka, 2014-05-23 20:38:48

Для Ларавеля 4 & 5:

  1. Переименовать server.php в вашей корневой папке Laravel, чтобы index.php
  2. Скопируйте файл .htaccess из каталога /public в корневую папку Laravel.

Вот и все!!:)

 1
Author: Abhijeet Navgire, 2017-06-29 11:57:45
 RewriteEngine on

 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d

 RewriteRule ^(.*)$ index.php/$1 [L]

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

 0
Author: Arun, 2016-01-20 04:58:42

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

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} !^public
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
 0
Author: Harry Bosh, 2016-06-17 04:58:00

Переименовать server.php в корневой папке вашего Laravel, чтобы index.php и скопируйте файл .htaccess из каталога /public в корневую папку Laravel. -- Вот и все!!:)

 0
Author: Rizwan Taj, 2016-07-12 11:35:47

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

Измените его на index.php, и он заработает или введите в терминале:

$cp server.php index.php
 0
Author: Samuel Kwame Antwi, 2018-08-17 17:54:11
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)/(public)/(index.php)/$ $1/$4 [L]
</IfModule>
 -2
Author: onlinewebsite, 2014-12-02 15:38:38

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

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

Вот и все, просто запустите свой URL-адрес без публичного и index.php как показано ниже http://localhost/blog/

 -3
Author: amar nath jena, 2016-09-01 19:02:37