В основном мне нужно удалить 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',
как я могу это изменить?
Если он еще не существует, создайте файл .htaccess в корневом каталоге Laravel. Создайте файл .htaccess
корневом каталоге Laravel, если он уже не существует. (Обычно это находится в папке public_html
)
Отредактируйте файл .htaccess, чтобы он содержал следующий код:
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^(.*)$ public/$1 [L] </IfModule>
Теперь вы сможете получить доступ к веб-сайту без части «/public/index.php/».
Создайте новую папку в корневом каталоге и переместите все файлы и папку, кроме общей папки. Вы можете называть это тем, что хотите. Я буду использовать «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
по любой причине.
Чтобы сломать это, может произойти пара вещей:
Я отмечаю, что, возможно, бессмысленно, что ваш файл имеет имя .htacces
в вашем вопросе. Я предполагаю, что это опечатка, но с учетом того, что вы ее не заметили, и на самом деле это просто не хватает второго с, это в точности такая незначительная ошибка, которая оставила бы меня стучать головой о стену, ища что-то более сложное ,
Ваш сервер не может разрешить .htaccess
. Чтобы проверить это, перейдите в конфигурационный файл Apache. В современных сборках Apache это обычно не в одном файле конфигурации, поэтому убедитесь, что вы используете тот, который указывает на ваше приложение, где бы он ни существовал. + Изменить
AllowOverride none
в
AllowOverride all
В качестве последующих действий документы Apache также рекомендуют, чтобы в целях безопасности вы не делали этого для каждой папки, если собираетесь перейти на .htaccess
для перезаписи. Вместо этого сделайте это для папок, которые вам нужно добавить .htaccess
.
У вас включен mod_rewrite
? Это может вызвать проблемы. Я заметил, что у вас есть тег вверху <IfModule mod_rewrite.c>
. Попробуйте прокомментировать эти теги и перезапустите Apache. Если вы получите сообщение об ошибке, возможно, это связано с тем, что вам необходимо включить mod_rewrite
: как включить mod_rewrite для Apache 2.2
Надеюсь это поможет. Я назвал некоторые из наиболее распространенных проблем, но есть несколько других, которые могут быть более мирскими или уникальными. Еще одно предложение на dev-сервере? Переустановите Apache. Если возможно, сделайте это из другого источника с хорошим учебным пособием.
Для Laravel 4 и 5:
Это оно !! 🙂
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 /