Mengapa pengalihan .htaccess berfungsi di http tetapi tidak dengan https?

10

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]
Sheldon McGee
sumber

Jawaban:

20

Tidak ada info 100% cukup di sini untuk melanjutkan, tetapi dalam pengaturan SSL standar biasa (Red Hat / CentOS / Fedora misalnya) VirtualHost untuk SSL diatur dalam wadah itu sendiri. Penggunaan mod_rewrite membutuhkan setidaknya "AllowOverride FileInfo" harus ditetapkan pada root dokumen agar dapat bertindak.

Periksa konfigurasi Anda untuk SSL (/etc/httpd/conf.d/ssl.conf secara default), pastikan itu terlihat seperti:

DocumentRoot /var/www/html
<Directory /var/www/html>
  AllowOverride FileInfo
</Directory>

Default untuk AllowOverride adalah 'Tidak Ada', jadi pengaturan lain (seperti 'Semua') yang menambahkan kemampuan FileInfo adalah OK.

http://httpd.apache.org/docs/2.2/mod/core.html#allowoverride


sumber
1
Saya tidak dapat melihat /etc/httpd/conf.d/ssl.conf di linux saya, bagaimana cara menemukannya?
Ashok KS
1
(1) Anda mungkin perlu mencari file conf .. Misalnya, pada beberapa sistem itu /etc/apache2/sites-enabled/default-ssl.conf(2) Supaya sangat jelas, jika Anda masih mengalami masalah, coba AllowOverride Allalih-alih AllowOverride FileInfo. Setelah berhasil, Anda dapat membaca AllowOveridedokumen Apache secara terperinci untuk membatasi akses lebih khusus untuk memaksimalkan keamanan. (3) Ingat Anda harus memulai ulang apache agar pengaturan dapat berlaku.
SilentSteel
4

Mungkinkah mod_rewrite tidak diaktifkan untuk server HTTPS, atau .htaccess tidak digunakan?

Periksa AllowOverideizin 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.

Orbling
sumber
1

"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:

 cd /etc/apache2/sites-enabled
 sudo vim default-ssl

Ubah AllowOverride None ke Semua . Demikian pula sudo vim ssl

mareenator
sumber
0

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

Yoni Hassin
sumber