Как я могу удалить " 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 ^(.*)/$ / [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',


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

1236   14  

14 ответов:

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

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

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

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

теперь вы должны иметь возможность получить доступ к веб-сайту без " /public / index.РНР/" часть.

Вариант 2: Переместить вещи в каталоге' / public ' в корневой каталог

создать новую папку в корневом каталоге и переместите все файлы и папки кроме папки. Вы можете называть это как угодно. Я буду использовать "laravel_code".

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

после этого, все, что нам нужно сделать, это изменить расположения в и .

на 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 и копии С /public каталог в корневую папку Laravel.

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

вот простые шаги, чтобы удалить PUBLIC в URL (Laravel 5)

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

2: открытие индекса.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. Перейти к

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

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule    ^$    public/    [L]
    RewriteRule    (.*) public/    [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= [PT,L]

</IfModule>

свои работы... !!!

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

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

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

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

источник: документация 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. Если это возможно, сделайте это из другого источника с хорошим учебником.

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

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

Для Laravel 4 & 5:

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

вот оно !! :)

 RewriteEngine on

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

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

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

надеюсь, что это поможет, как это было для меня.

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

переименовать сервер.php в корневой папке вашего Laravel для индексирования.php и скопировать .htaccess файл из / общего каталога в корневую папку Laravel. -- Вот так !! :)

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

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

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

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

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

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

Comments

    Ничего не найдено.