Saya memiliki file .htaccess sederhana yang berfungsi bagus di versi http situs tetapi tidak ketika saya membuka https. Mengapa?
RewriteEngine on
#This is so if the file exists then use the file
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ %{REQUEST_FILENAME} [L]
#These conditions check if a file or folder exists just for reference
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
#if someone adds ".php" to the slug get rid of it
RewriteRule ^(.*)\.php$ $1
#don't add the [R] here because we don't want it to redirect
RewriteRule ^(.*)$ index.php?id=$1 [L,QSA]
apache-2.2
mod-rewrite
.htaccess
Sheldon McGee
sumber
sumber
/etc/apache2/sites-enabled/default-ssl.conf
(2) Supaya sangat jelas, jika Anda masih mengalami masalah, cobaAllowOverride All
alih-alihAllowOverride FileInfo
. Setelah berhasil, Anda dapat membacaAllowOveride
dokumen Apache secara terperinci untuk membatasi akses lebih khusus untuk memaksimalkan keamanan. (3) Ingat Anda harus memulai ulang apache agar pengaturan dapat berlaku.Mungkinkah mod_rewrite tidak diaktifkan untuk server HTTPS, atau .htaccess tidak digunakan?
Periksa
AllowOveride
izin yang digunakan untuk situs biasa dan bandingkan dengan versi SSL, mungkin perbedaan. Mungkin diperkenalkan untuk meningkatkan keamanan, jika bukan kecelakaan.mod_rewrite
di samping penting, sehingga penyedia hosting yang layak harus membantu menyelesaikan masalah ini.sumber
"bekerja pada apache2 + ubuntu tepat"
Masalah serupa terjadi pada saya ketika saya menggunakan kerangka kerja Slim dan mencoba untuk menghapus index.php yang diperlukan dalam url. ReWrite bekerja dengan sempurna untuk http tetapi untuk https: itu menunjukkan url tidak ditemukan, yang berarti bahwa reWrite tidak berfungsi.
Setelah beberapa percobaan, saya datang dengan solusi ini:
Ubah AllowOverride None ke Semua . Demikian pula sudo vim ssl
sumber
Saya memiliki masalah yang sama, ini yang berhasil bagi saya.
Di httpd.conf Anda, pastikan Anda memiliki keduanya:
ServerName domain.com
ServerAlias www.domain.com
sumber