Saya perlu menghapus index.php
atau public/index.php
dari URL yang dihasilkan di Laravel; Biasanya jalan adalah localhost/public/index.php/someWordForRoute
, Seharusnya sepertilocalhost/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 / config / app.php
'url' => 'http://localhost',
Bagaimana saya bisa mengubahnya?
mod_rewrite
diaktifkan./var/www/project_name/public
Jawaban:
Opsi 1: Gunakan .htaccess
Jika belum ada, buat file .htaccess di direktori root Laravel. Buat
.htaccess
file direktori root Laravel Anda jika belum ada. (Biasanya itu ada di bawahpublic_html
folder Anda )Edit file .htaccess sehingga berisi kode berikut:
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^(.*)$ public/$1 [L] </IfModule>
Sekarang Anda seharusnya bisa mengakses situs web tanpa bagian "/public/index.php/".
Opsi 2: Pindahkan sesuatu di direktori '/ public' ke direktori root
Buat folder baru di direktori root Anda dan pindahkan semua file dan folder kecuali folder publik. Anda bisa menyebutnya apapun yang Anda inginkan. Saya akan menggunakan "laravel_code".
Selanjutnya, pindahkan semuanya dari direktori publik dan ke folder root. Ini akan menghasilkan sesuatu yang agak mirip dengan ini:
Setelah itu, yang harus kita lakukan adalah mengedit lokasi di
laravel_code/bootstrap/paths.php
file danindex.php
file.Di
laravel_code/bootstrap/paths.php
temukan baris kode berikut:'app' => __DIR__.'/../app', 'public' => __DIR__.'/../public',
Dan ubah menjadi:
'app' => __DIR__.'/../app', 'public' => __DIR__.'/../../',
Di
index.php
, temukan baris ini:require __DIR__.'/../bootstrap/autoload.php'; $app = require_once __DIR__.'/../bootstrap/start.php';
Dan ubah menjadi:
require __DIR__.'/laravel_code/bootstrap/autoload.php'; $app = require_once __DIR__.'/laravel_code/bootstrap/start.php';
Sumber: Cara menghapus / publik / dari URL di Laravel
sumber
etc/apache2/apache2.conf
perubahan dariAllowOverride None
keAllowOverride All
tempat Anda melihat konfigurasi Direktori<Directory /var/www/></Directory>
,.<Directory ...
konfigurasi apache memilikiAllowOverride All'
Sesuatu seperti ini:<Directory "/var/www/html/laravel/public"> Options Indexes FollowSymLinks MultiViews **AllowOverride All** </Directory>
Saya mencoba ini di Laravel 4.2
Ubah nama
server.php
di folder root Laravel Anda menjadiindex.php
dan salin.htaccess
file dari/public
direktori ke folder root Laravel Anda.Saya harap ini berhasil
sumber
Jangan bingung dengan opsi lain potongan di bawah yang saya gunakan dan akan berguna juga untuk Anda. Letakkan htacces di bawah ini di root Anda.
<IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^$ public/ [L] RewriteRule (.*) public/$1 [L] </IfModule>
Buka direktori publik Anda dan letakkan file htaccess lain dengan potongan kode di bawah ini
<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>
Bekerja... !!!
Laravel Menggunakan di bawah .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]
sumber
DI SINI ADALAH LANGKAH SEDERHANA UNTUK MENGHAPUS URL PUBLIK DI (Laravel 5)
1: Salin semua file dari folder publik dan tempel di folder root laravel
2: Buka index.php dan ubah
Dari
require __DIR__.'/../bootstrap/autoload.php';
Untuk
require __DIR__.'/bootstrap/autoload.php';
Dan
$app = require_once __DIR__.'/../bootstrap/app.php';
Untuk
$app = require_once __DIR__.'/bootstrap/app.php';
Di laravel 4 jalur 2 adalah
$app = require_once __DIR__.'/bootstrap/start.php';
sebagai ganti$app = require_once __DIR__.'/bootstrap/app.php';/app.php
Hanya itu saja.
sumber
1) Periksa apakah mod_rewrite diaktifkan. Buka
/etc/apache2/mods-enabled
direktori dan lihat apakahrewrite.load
tersedia. Jika tidak, aktifkan menggunakan perintahsudo a2enmod rewrite
. Ini akan mengaktifkan modul rewrite. Jika sudah diaktifkan, itu akan menampilkan pesanModule rewrite already enabled
.2) Buat virtual host untuk direktori publik sehingga alih-alih memberikan
http://localhost/public/index.php
kami akan dapat menggunakan seperti ituhttp://example.com/index.php
. [maka nama folder publik akan di-hidded]3) Kemudian buat .htaccess yang akan menyembunyikan index.php dari url Anda yang harus berada di dalam direktori root (folder publik)
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php?/$1 [L]
sumber
mod_rewrite
dinonaktifkan.Ini kemungkinan besar tidak ada hubungannya dengan Laravel dan segala sesuatu yang berkaitan dengan konfigurasi Apache Anda.
Apakah Anda memiliki akses ke konfigurasi server Apache Anda? Jika demikian, lihat ini, dari dokumen:
Alasan mengapa saya menyebutkan ini terlebih dahulu adalah karena yang terbaik adalah menyingkirkan
.htaccess
sepenuhnya jika Anda bisa, dan menggunakanDirectory
tag di dalamVirtualHost
tag. Bisa dikatakan, sisa dari ini akan menganggap Anda bertahan dengan.htaccess
rute untuk alasan apa pun.Untuk memecahnya, beberapa hal dapat terjadi:
Saya perhatikan, mungkin tidak ada gunanya, bahwa file Anda dinamai
.htacces
dalam pertanyaan Anda. Dugaan saya adalah bahwa ini adalah kesalahan ketik tetapi jika Anda mengabaikannya dan sebenarnya hanya melewatkan detik, ini adalah jenis kesalahan kecil yang akan membuat saya membenturkan kepala ke dinding mencari sesuatu yang lebih menantang .Server Anda tidak dapat mengizinkan
.htaccess
. Untuk memeriksanya, buka file konfigurasi Apache Anda. Dalam build Apache modern ini biasanya tidak ada dalam satu file konfigurasi, jadi pastikan Anda menggunakan file yang mengarah ke aplikasi Anda, di mana pun file itu ada. Perubahanuntuk
Sebagai tindak lanjut, dokumen Apache juga merekomendasikan bahwa, untuk tujuan keamanan, Anda tidak melakukan ini untuk setiap folder jika Anda ingin
.htaccess
menulis ulang. Sebagai gantinya, lakukan untuk folder yang perlu Anda tambahkan.htaccess
.Apakah Anda sudah
mod_rewrite
mengaktifkannya? Itu bisa menyebabkan masalah. Saya perhatikan Anda memiliki tag di bagian atas<IfModule mod_rewrite.c>
. Cobalah mengomentari tag tersebut dan mulai ulang Apache. Jika Anda mendapatkan kesalahan maka itu mungkin karena Anda perlu mengaktifkanmod_rewrite
: Cara mengaktifkan mod_rewrite untuk Apache 2.2Semoga ini membantu. Saya telah menyebutkan beberapa masalah yang paling umum tetapi ada beberapa masalah lain yang mungkin lebih biasa atau unik. Saran lain tentang server dev? Instal ulang Apache. Jika memungkinkan, lakukan dari sumber yang berbeda dengan tutorial yang bagus.
sumber
Untuk Laravel 4 & 5:
server.php
di folder root Laravel Anda menjadiindex.php
.htaccess
file dari/public
direktori ke folder root Laravel Anda .Itu dia !! :)
sumber
Pastikan juga Rewrite Engline dihidupkan setelah mengedit file .htaccess
sumber
Laravel telah dikirimkan dengan URL yang cantik .htaccess sudah ... Anda harus keluar dari kotak ... http://laravel.com/docs/installation#pretty-urls
Pastikan mod_rewrite diaktifkan dan jalur beranda Anda disetel ke direktori publik aplikasi Anda.
sumber
mod_rewrite
dan saya menyalin kode yang ada di halaman itu dan masih belum berfungsiServerAdmin webmaster@localhost DocumentRoot /home/web-apps/myproject/public
user
adalah tempat saya menyimpan foto, juga saya memiliki file pisau yang disebutuser
, ketika saya menulis di URLmyproject.com/user
menunjukkan kepada saya isi folder, gambarAnda harus melakukan langkah-langkah berikut untuk melakukan ini, yaitu sebagai berikut
Petakan domain Anda ke folder publik proyek Anda (yaitu / var / www / html / proyekanda / publik) (jika menggunakan linux)
Buka folder publik Anda, edit
.htaccess
file Anda di sanaAddHandler 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
, itu melindunginya.sumber
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L]
gunakan ini di .htaccess dan mulai ulang server
sumber
Semoga ini membantu seperti yang terjadi pada saya.
<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_URI} !^public RewriteRule ^(.*)$ public/$1 [L] </IfModule>
sumber
Saya baru saja menginstal Laravel 5 untuk sebuah proyek dan ada file di root bernama
server.php
.Ubah ke
index.php
dan berfungsi atau ketik terminal:sumber
Ubah nama
server.php
di folder root Laravel Anda menjadiindex.php
dan salin.htaccess
file dari/public
direktori ke folder root Laravel Anda.sumber
Bekerja dan 100% AMAN
https://medium.com/@matteovirgilio/laravel-5-how-to-change-the-public-folder-and-secure-private-files-on-shared-hosting-a8e2e5b9b25f
sumber
Jika Anda menggunakan IIS Windows Server tambahkan
web.config
file di folder root dan masukkan kode di bawah ini:<?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>
dan jika Anda
.htaccess
menggunakan yang ini:RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L]
sumber
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^(.*)/(public)/(index.php)/$ $1/$4 [L] </IfModule>
sumber
Sesuai Laravel 5.3 hal-hal di atas tidak akan berfungsi dengan baik, tapi harap tenang dan ikuti langkah-langkah di bawah ini:
Langkah 1. Masuk ke dalam proyek laravel.
Langkah 2. Buat satu direktori / folder acak misalnya. laravelcode
Langkah 3. Pindahkan semua folder dan file (Kecuali folder publik )
Langkah 4. Pindahkan semua folder dan file yang berada di dalam folder publik ke proyek laravel
Langkah 5. Sekarang di dalam proyek laravel ada file index.php, silahkan buka itu dan ubah jalur folder untuk bootstrap sesuai jalur baru seperti sebelumnya "memerlukan DIR . '/ .. / bootstrap / autoload.php';" sekarang akan menjadi "membutuhkan DIR . '/ laravelcode / bootstrap / autoload.php';"
Itu saja jalankan url Anda tanpa public dan index.php seperti di bawah ini http: // localhost / blog /
sumber