Ich habe eine einfache .htaccess-Datei, die auf der http-Version der Website hervorragend funktioniert, aber nicht, wenn ich zu https gehe. Warum?
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]
quelle
/etc/apache2/sites-enabled/default-ssl.conf
(2) Um ganz klar zu sein, wenn Sie immer noch Probleme haben, versuchen Sie esAllowOverride All
stattdessenAllowOverride FileInfo
. Sobald Sie es zum Laufen gebracht haben, können Sie die Apache-AllowOveride
Dokumente im Detail lesen , um den Zugriff genauer zu beschränken und die Sicherheit zu maximieren. (3) Denken Sie daran, dass Sie Apache neu starten müssen, damit die Einstellungen wirksam werden.Könnte es sein, dass mod_rewrite für den HTTPS-Server nicht aktiviert ist oder dass .htaccess nicht verwendet wird?
Überprüfen Sie die
AllowOveride
für die reguläre Site verwendeten Berechtigungen und vergleichen Sie sie mit der SSL-Version, wahrscheinlich eine Diskrepanz. Wahrscheinlich eingeführt, um die Sicherheit zu verbessern, wenn nicht sogar ein Unfall.mod_rewrite
ist jedoch so gut wie unerlässlich, daher sollte jeder anständige Hosting-Anbieter helfen, dies zu klären.quelle
"Arbeiten an Apache2 + Ubuntu präzise"
Ein ähnliches Problem trat bei mir auf, als ich das Slim-Framework verwendete und versuchte, die in der URL erforderliche index.php zu entfernen. Das Umschreiben funktionierte perfekt für http, aber für https: Es wurde eine nicht gefundene URL angezeigt, was bedeutete, dass das Umschreiben nicht funktionierte.
Nach einigen Versuchen habe ich folgende Lösung gefunden:
Ändern Sie AllowOverride None in All . Ähnlich sudo vim ssl
quelle
Ich hatte ein ähnliches Problem, das hat bei mir funktioniert.
Stellen Sie in Ihrer httpd.conf sicher, dass Sie beide haben:
Servername domain.com
ServerAlias www.domain.com
quelle