Мне нужно удалить index.php
или public/index.php
из сгенерированного URL-адреса в Laravel; обычно путь localhost/public/index.php/someWordForRoute
, это должно быть что-то вродеlocalhost/someWordForRoute.
.htaccess
<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.php
'url' => 'http://localhost',
Как я могу это изменить?
mod_rewrite
он включен./var/www/project_name/public
Ответы:
Вариант 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
источник
etc/apache2/apache2.conf
изменяющегося отAllowOverride None
до ,AllowOverride All
где вы видите конфигурации каталога,<Directory /var/www/></Directory>
.<Directory ...
конфигурации имеетAllowOverride All'
что - то вроде этого:<Directory "/var/www/html/laravel/public"> Options Indexes FollowSymLinks MultiViews **AllowOverride All** </Directory>
Я пробовал это на Laravel 4.2
Переименуйте
server.php
файл в корневой папке Laravelindex.php
и скопируйте.htaccess
файл из/public
каталога в корневую папку Laravel.надеюсь это работает
источник
Не запутайтесь с другим вариантом, который я использую ниже, он также будет вам полезен. Поместите указанные ниже 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 использует ниже .htaccess
# Redirect Trailing Slashes If Not A Folder... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} (.+)/$ RewriteRule ^ %1 [L,R=301] # Handle Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L]
источник
ЗДЕСЬ ПРОСТЫЕ ШАГИ ДЛЯ УДАЛЕНИЯ ПУБЛИКИ В 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]
источник
mod_rewrite
был отключен.Скорее всего, это имеет мало общего с Laravel и все, что связано с вашими конфигурациями Apache.
У вас есть доступ к конфигурации вашего сервера Apache? Если да, проверьте это в документации:
Причина, по которой я упоминаю об этом в первую очередь, заключается в том, что лучше всего
.htaccess
полностью избавиться от него, если вы можете, и использоватьDirectory
тег внутриVirtualHost
тега. При этом все остальное предполагает, что вы придерживаетесь.htaccess
маршрута по какой-либо причине.Чтобы сломать это, может произойти пара вещей:
Замечу, возможно, бессмысленно, что ваш файл называется
.htacces
в вашем вопросе. Я предполагаю, что это опечатка, но на случай, если вы ее не заметили, а на самом деле просто не хватает второго s, это именно та небольшая ошибка, которая заставила бы меня биться головой о стену в поисках чего-то более сложного .Ваш сервер не может разрешить
.htaccess
. Чтобы проверить это, перейдите в файл конфигурации Apache. В современных сборках Apache этого обычно нет в одном файле конфигурации, поэтому убедитесь, что вы используете тот, который указывает на ваше приложение, где бы он ни существовал. + Изменитьк
Как продолжение, документы Apache также рекомендуют в целях безопасности не делать это для каждой папки, если вы собираетесь
.htaccess
переписать. Вместо этого сделайте это для папок, в которые нужно добавить.htaccess
.А ты
mod_rewrite
включил? Это могло вызвать проблемы. Я заметил, что у вас есть тег наверху<IfModule mod_rewrite.c>
. Попробуйте закомментировать эти теги и перезапустите Apache. Если вы получаете сообщение об ошибке, вероятно, это связано с тем, что вам нужно включитьmod_rewrite
: Как включить mod_rewrite для Apache 2.2Надеюсь это поможет. Я назвал некоторые из наиболее распространенных проблем, но есть несколько других, которые могут быть более приземленными или уникальными. Еще одно предложение по серверу разработки? Переустановите Apache. Если возможно, сделайте это из другого источника с помощью хорошего руководства.
источник
Для Laravel 4 и 5:
server.php
корневую папку Laravel вindex.php
.htaccess
файл из/public
каталога в корневую папку Laravel .Это оно !! :)
источник
Также убедитесь, что после редактирования файла .htaccess включена функция Rewrite Engline.
источник
Laravel уже поставляется с красивым URL-адресом .htaccess ... вы должны быть готовы выйти из коробки ... http://laravel.com/docs/installation#pretty-urls
Убедитесь, что mod_rewrite включен и ваш домашний путь установлен в публичный каталог вашего приложения.
источник
mod_rewrite
и скопировал код, который находится на этой странице, но все еще не работаетServerAdmin webmaster@localhost DocumentRoot /home/web-apps/myproject/public
user
это место, где я храню фотографии, также у меня есть файл с лезвиямиuser
, когда я пишу в URL-адресе,myproject.com/user
мне отображается содержимое папки, изображенияДля этого вам необходимо выполнить следующие шаги:
Сопоставьте свой домен с общедоступной папкой вашего проекта (например, / var / www / html / yourproject / public) (при использовании linux)
Перейдите в свою общую папку, отредактируйте там свой
.htaccess
файлAddHandler application/x-httpd-php72 .php <IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews -Indexes </IfModule> RewriteEngine On # Handle Authorization Header RewriteCond %{HTTP:Authorization} . RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] # Redirect non-www to www RewriteCond %{HTTP_HOST} !^www\. RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] # Redirect non-http to https RewriteCond %{HTTPS} off RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] # Redirect Trailing Slashes If Not A Folder... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} (.+)/$ RewriteRule ^ %1 [L,R=301] # Handle Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] # Remove index.php RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC] RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L] </IfModule>
https
защиты от прямого доступа к любому маршруту .источник
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>
источник
Я только что установил Laravel 5 для проекта, и в корне есть файл с именем
server.php
.Измените его на
index.php
и он работает или введите терминал:$cp server.php index.php
источник
Переименуйте
server.php
файл в корневой папке Laravelindex.php
и скопируйте.htaccess
файл из/public
каталога в корневую папку Laravel.источник
Он работает и его 100% БЕЗОПАСНОСТЬ
https://medium.com/@matteovirgilio/laravel-5-how-to-change-the-public-folder-and-secure-private-files-on-shared-hosting-a8e2e5b9b25f
источник
Если вы используете IIS Windows Server, добавьте
web.config
файл в корневую папку и поместите следующий код:<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="Imported Rule 1" stopProcessing="true"> <match url="^(.*)$" ignoreCase="false" /> <conditions logicalGrouping="MatchAll"> <add input="{URL}" pattern="^system.*" ignoreCase="false" /> </conditions> <action type="Rewrite" url="/index.php/{R:1}" /> </rule> <rule name="Imported Rule 2" stopProcessing="true"> <match url="^(.*)$" ignoreCase="false" /> <conditions logicalGrouping="MatchAll"> <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" /> <add input="{R:1}" pattern="^(index\.php|images|robots\.txt|css)" ignoreCase="false" negate="true" /> </conditions> <action type="Rewrite" url="index.php/{R:1}" /> </rule> </rules> </rewrite> </system.webServer> </configuration>
и если вы
.htaccess
используете этот:RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L]
источник
<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 /
источник