Как я могу удалить " 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',
как я могу изменить это?
14 ответов:
Вариант 1: Использовать .htaccess
если его еще нет, создайте .файл htaccess в корневом каталоге Laravel. Создайте
.htaccessфайл корневой каталог Laravel, если он еще не существует. (Обычно он находится под вашим )редактировать .htaccess файл, так что он содержит следующий код:
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^(.*)$ public/ [L] </IfModule>теперь вы должны иметь возможность получить доступ к веб-сайту без " /public / index.РНР/" часть.
Вариант 2: Переместить вещи в каталоге' / public ' в корневой каталог
создать новую папку в корневом каталоге и переместите все файлы и папки кроме папки. Вы можете называть это как угодно. Я буду использовать "laravel_code".
затем переместите все из общего каталога в корневую папку. Это должно привести к чему-то похожему на это:
после этого, все, что нам нужно сделать, это изменить расположения в и .
на
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вот и все.
Не путайте с другим вариантом фрагмент ниже я использую и будет полезен для вас тоже. Поставить ниже 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маршрут для любой причина.чтобы сломать это, может произойти пара вещей:
я замечаю, возможно, бессмысленно, что ваш файл называется
.htaccesв вашем вопросе. Я предполагаю, что это опечатка, но на случай, если вы ее упустили, и на самом деле просто не хватает второй s, это именно та незначительная ошибка, которая заставит меня биться головой о стену в поисках чего-то более сложного.ваш сервер нельзя было допустить
.htaccess. Чтобы проверить это, перейдите в файл конфигурации Apache. В современных сборках Apache это обычно не в одном файле конфигурации, поэтому убедитесь, что вы используете тот, который указывает на ваше приложение, где бы оно ни существовало. ИзменитьAllowOverride noneдо
AllowOverride allкак следствие, документы Apache также рекомендуют, чтобы в целях безопасности вы не делали этого для каждой папки, если вы собираетесь пойти на
.htaccessдля рерайта. Вместо этого, сделайте это для папок нужно добавить.htaccessдля.ты
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:
- переименовать сервер.php в корневой папке Laravel для индексирования.php
- скопировать .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