it-swarm-id.com

Bagaimana cara menerapkan penulisan ulang URL dalam file .htaccess saya?

Saya ingin melakukan penulisan ulang URL (Mengapa? Lihat pertanyaan ini .) Sehingga alih-alih pengguna melihat alamat seperti

labouseur.com/course-compilers.html 

mereka malah bisa melihat dan menggunakan secara sederhana

labouseur.com/course-compilers

(Bahkan lebih baik, mungkin saya harus merestrukturisasi itu sehingga kursus/kompiler.)

Saya menggunakan layanan hosting bersama berbasis Linux untuk situs web saya, jadi saya tidak memiliki kontrol administratif server, tetapi saya memiliki kontrol atas .htaccess. Referensi yang saya baca online tampak kurang jelas bagi saya, jadi saya mencari sedikit kejelasan dan saran di sini.

17
Alan

Anda benar-benar dapat menghapus .html dari file di server Anda dan mengatur pengaturan di htaccess sehingga mereka dapat disajikan sebagai file html, tetapi itu mungkin bukan yang Anda cari.

Melakukan hal ini :

RewriteEngine on
# Check this condition to ensure that it's not a directory.
RewriteCond %{REQUEST_FILENAME} !-d
# Check this condition to ensure that there's a file there
RewriteCond %{REQUEST_FILENAME}\.html -f
# Replace html with your file extension, eg: php, htm, asp
RewriteRule ^(.*)$ $1.html
13
Rizwan Kassim

Pertama, pastikan Apache memiliki modul dan diizinkan di file .htacces, lalu tambahkan:

RewriteEngine on

# Rewrite rules
RewriteRule ^/myoldsubfolder/(.*) /newfolder/$1 

Contoh Anda akan membutuhkan

RewriteCond %{REQUEST_URI} !-d
RewriteCond %{REQUEST_URI}\.html -f
RewriteRule ^/(([a-zA-Z0-9_]+)/?)$ /$1.html

Untuk struktur direktori satu tingkat dan

RewriteRule ^/(([a-zA-Z0-9_]+)/?)+$ /$1.html

Untuk struktur multi-level.

Tapi hati-hati

Jika Anda memiliki struktur

/site/.htaccess
/site/subfolder/.htaccess
/site/subfolder/cats/.htaccess

Aturan penulisan ulang pada file .htaccess anak akan relatif terhadap folder induknya dan Anda dapat masuk ke beberapa berantakan menulis ulang situasi loop. Pastikan Anda menggunakan RewriteCond untuk menghentikannya jika Anda bisa!

3
Aiden Bell

Sebagai tambahan untuk jawaban di atas, seseorang dapat menggunakan

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^([\w-]+)$ $1.html [L]

([\w-]+) Mengizinkan surat, digit dengan tanda hubung (-).

(.*) akan menulis ulang setiap permintaan apa pun, yang dapat mengesampingkan aturan berikut lainnya yang menyebabkan kesalahan server internal dalam mengakses.

2
Abhishek Gurjar

Anda tidak harus menggunakan file .htaccess untuk mencapai ini. Cukup susun file Anda menjadi direktori, dan alih-alih menggunakan "labouseur.com/course-compilers.html", cukup beri nama file index.html dan masukkan ke direktori yang disebut "course-compiler". Kemudian ketika Anda menunjuk ke direktori itu, indeks disajikan secara default tetapi tidak akan ditampilkan di URL. Jadi Anda bisa menulis tautan Anda sebagai "labourseur.com/course-compiler" dan semuanya akan baik-baik saja.

Tidak diperlukan .htaccess.

1
Joel Glovier