Bagaimana cara menyembunyikan nama folder dari URL menggunakan .htaccess

Saya memiliki situs web dengan folder root 'www', tetapi saya meletakkan semua file php termasuk index.php di sub-folder root. Saya menulis sendiri file .htaccess untuk dialihkan, jadi jika saya memasukkan www.test.com, itu akan melompat ke www.test.com/folder dan menampilkan index.php.

Di bawahnya adalah .htaccess saya yang saya masukkan ke dalam root.

 RewriteEngine On
 RewriteBase /
 RewriteRule ^folder2 - [L] 
 #ignore folder2 in which I put important files, but no works for the website
 RewriteCond %{REQUEST_URI} !^/folder(.*)
 RewriteRule (.*) /folder/$1

Saat ini, saya ingin mengubah file .htaccess untuk mencapai tujuan berikut:

  1. Saat saya memasukkan www.test.com, lompat ke www.test.com/folder seperti biasa, tetapi tampilkan url tanpa folder.
  2. Semua halaman dalam folder akan menampilkan url tanpa nama folder. Seperti

    www.test.com/shop/page1 -> www.test.com/page1

Saya mencari beberapa skrip, tetapi tidak ada satupun yang berfungsi.


person user3404516    schedule 12.05.2015    source sumber
comment
Lihat ini... stackoverflow.com/questions/18361419 /   -  person NinjaCat    schedule 12.05.2015
comment
Bagaimana hubungan /shop/ dengan /folder/? Apakah keduanya sama?   -  person anubhava    schedule 12.05.2015


Jawaban (3)


Saya telah menemukan pertanyaan terkait ini yang menjawab masalah Anda. Cuplikan jawabannya adalah (catatan: disesuaikan dengan kebutuhan):

RewriteEngine On
RewriteBase /

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+folder/([^\s]+) [NC]
RewriteRule ^ %1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (?!^folder/)^(.*)$ /folder/$1 [L,NC]

Referensi: https://stackoverflow.com/a/18361995/3673491

person João Cerqueira    schedule 12.05.2015
comment
Saya harus mengganti file ini dengan .htaccess saya di root, benar kan? Situs hanya melompat ke folder, tetapi urlnya tetap 'www.test.com/folder'. - person user3404516; 12.05.2015
comment
Perhatikan bahwa saya baru saja memperbarui kode dengan jawaban dari saran @NinjaCat, sekali lagi disesuaikan dengan kebutuhan Anda. Periksa dan beri tahu saya apakah itu berfungsi dengan baik sekarang. Saya telah membuat tes lokal sederhana di sini dan berhasil. Perhatikan bahwa Anda perlu mengubah di mana pun Anda melihat folder dengan nama sebenarnya yang ingin Anda berikan ke folder itu. - person João Cerqueira; 12.05.2015

Berdasarkan aturan Anda saat ini. Anda cukup melakukan sedikit penyesuaian.

 RewriteEngine On
 RewriteBase /
 #ignore folder2 in which I put important files, but no works for the website
 RewriteRule ^folder2/? - [L] 

 RewriteRule ^/?$ /folder/ [L]
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^(.*)$ /folder/$1 [L]
person Panama Jack    schedule 12.05.2015
comment
Ini tidak bekerja. Situs web tersebut bahkan tidak menampilkan halaman index.php lagi. - person user3404516; 12.05.2015
comment
Itu masih tidak melompat. Haruskah saya meletakkan file ini di folder atau menyimpannya di root saja? - person user3404516; 12.05.2015
comment
Apa maksudmu tidak melompat? Saya tidak mengerti apa yang Anda maksud dengan itu. Apa yang Anda ketik di browser dan apa yang Anda harapkan terjadi? Mulai dari sana. - person Panama Jack; 12.05.2015

Anda dapat menggunakan kode di bawah ini.

RewriteEngine On
RewriteBase /
RewriteRule ^/?$ /folder/ [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /folder/$1 [L]
person Bhavik Koradiya    schedule 17.07.2017