Tidak dapat menemukan file JavaScript dan CSS Anda adalah masalah sisi klien / browser yang terkait dengan jalur URL Anda, itu bukan sesuatu yang harus diperbaiki .htaccess
(setidaknya tidak dalam kasus ini) - meskipun itu karena Anda mengubah ini Jalur URL (di .htaccess
) tempat Anda mengalami masalah ini.
Seperti yang disarankan @closetnoc dalam komentar, masalah ini disebabkan oleh penggunaan URL relatif di HTML Anda. Relatif dengan apa? Ingat, itu adalah agen-pengguna / browser yang menyelesaikan URL relatif di HTML Anda, bukan server. Jadi, Anda perlu memperbaiki URL Anda; tidak .htaccess
.
Misalnya, jika Anda mereferensikan file CSS Anda dengan URL relatif dari formulir href="styles.css"
(catatan, tanpa awalan garis miring) dan Anda saat ini di URL example.com/view.php?id=15
maka browser secara alami akan menyelesaikan URL dan permintaan CSS Anda example.com/styles.css
(di root dokumen). Namun, jika Anda saat ini berada di URL example.com/watch/15
(efektif dalam /watch
"subdirektori" [* 1] ) maka browser akan menyelesaikan URL CSS relatif Anda relatif ke /watch
subdirektori, bukan pada root dokumen, sehingga Anda berakhir dengan absolut / terselesaikan URL formulir example.com/watch/styles.css
.
( [* 1] Perhatikan bahwa "subdirektori" dalam konteks ini tidak harus berupa subdirektori fisik di server Anda - ini adalah "subdirektori" di jalur URL; segmen jalur tambahan. Namun browser tidak mengetahui perbedaannya. )
Hal yang sama berlaku jika Anda menggunakan URL relatif dalam dokumen kesalahan khusus Anda (didefinisikan dengan ErrorDocument
arahan di Apache). Dokumen kesalahan khusus berpotensi dipanggil pada URL apa pun, sehingga URL relatif apa pun ke sumber daya statis (CSS, gambar, JS, dll.) Akan relatif terhadap URL yang menyebabkan kesalahan, bukan relatif terhadap dokumen kesalahan itu sendiri (lokasi yang secara efektif disembunyikan dari agen-pengguna).
Jika Anda mengubah JavaScript dan URL CSS Anda menjadi root-relatif (dimulai dengan garis miring) atau bahkan absolut maka Anda tidak akan mendapatkan masalah ini. Ini akan menjadi metode yang disukai. Atau, Anda dapat menggunakan base
elemen ...
base
tag / elemen
Atau Anda dapat memasukkan base
elemen di head
bagian dokumen HTML Anda (meskipun ini bukan tanpa peringatan [* 2] ). Ini referensi URL absolut bahwa semua URL relatif relatif terhadap. Dengan kata lain, karena Anda mengharapkan URL relatif ini relatif terhadap akar dokumen lalu tambahkan berikut ini ke head
bagian:
<base href="http://example.com/">
Sekarang, URL relatif seperti yang styles.css
dirujuk dalam dokumen di URL /watch/15
akan meminta http://example.com/styles.css
, bukan http://example.com/watch/styles.css
.
[* 2] Namun, ada beberapa peringatan dengan menggunakanbase
elemen tersebut. Perhatian utama adalah bahwa setiapURL relatif yang ditujukan untuk menargetkandokumen saat ini sekarang akan menargetkan URL dasar. Ini dapat memengaruhi jangkar di laman sepertihref="#top"
dan URL formulir,href="?sortby=date"
dll. Dan jugaform
elemen yang mengirim sendiri menggunakanaction
atributkosong(mis.<form action="" ...
). URL relatif ini yang menargetkan dokumen saat ini perlu dimodifikasi untuk memasukkan URL lengkap dari halaman saat ini (yang mungkin mengalahkan titik menggunakanbase
tag sebagai solusi untuk memulai).
Referensi: