Subfolder yang dilindungi kata sandi meminta kata sandi dua kali lalu menampilkan kesalahan 404

Nov 11 2020

Masalah saya:

Situs web saya terdiri dari beberapa file di folder root, serta sub-folder yang dilindungi kata sandi, diatur di htaccess saya. Ketika saya mencoba mengakses sub-folder itu meminta saya untuk memasukkan kata sandi, sebagaimana mestinya. Namun, ini meminta saya untuk memasukkan kata sandi dua kali, dan setelah memasukkan kata sandi yang benar dua kali, itu kemudian memunculkan kesalahan 404. Jika saya memasukkan kata sandi yang salah, itu terus meminta kata sandi.

Setelah memasukkan kata sandi, sebenarnya saya masuk, karena jika saya mencoba mengakses bagian tertentu dari subfolder itu (yaitu myurl.com/subfolder/index.php), saya dapat mengaksesnya. Namun jelas situs tersebut tidak boleh menampilkan error 404 terlebih dahulu.

Apa yang saya coba:

Saya telah melihat bahwa orang lain memiliki masalah serupa, terkait sub-folder yang dilindungi kata sandi dan kesalahan 404 . Namun, masalah saya sedikit berbeda, karena saya sebenarnya harus memasukkan kata sandi. Oleh karena itu, solusi umum penambahan ErrorDocument 401 "Authorisation Required"belum menyelesaikan masalah.

Kode:

Ini adalah htaccess untuk folder root:

#Redirects to the https version of site
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] ## Removes php extensions RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^\.]+)$ $1.php [NC,L]

#Allow password for subfolder
ErrorDocument 401 "Authorisation Required"

Dan ini adalah htacess untuk subfolder:

#Password for subfolder
AuthType Basic
AuthName "Password Protected Area"
AuthUserFile myurl/mysubfolder/.htpasswd
Require valid-user

Bantuan apa pun sangat dihargai!

Jawaban

MrWhite Nov 11 2020 at 23:36
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

Jika Anda meminta /subfolder direktori (dan setelah Anda diautentikasi) direktif mod_rewrite di atas (dalam .htaccessfile root ) akan menambahkan .phpekstensi, yaitu. /subfolder/.phpdan menghasilkan 404.

(Tidak yakin mengapa Anda diminta dua kali untuk memasukkan kata sandi, kecuali ini juga terkait dengan penulisan ulang di atas, atau mungkin dengan cara 404 dipicu - apakah Anda memiliki dokumen 404 tersuai yang ditentukan? Apakah Anda memiliki .htaccessarahan lain ? )

Anda perlu:

  • Sertakan kondisi tambahan dalam aturan di atas untuk mengecualikan direktori. Sebagai contoh:

    RewriteCond %{REQUEST_FILENAME} !-d
    
  • Atau, di /subfolder/.htaccessfile tersebut, nonaktifkan mesin rewrite, sehingga perintah mod_rewrite di .htaccessfile induk tidak diproses. Meskipun ini mungkin tidak diinginkan.

    RewriteEngine Off