Mam prosty plik .htaccess, który działa świetnie w wersji http witryny, ale nie, gdy przejdę do https. Dlaczego?
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
źródło
źródło
/etc/apache2/sites-enabled/default-ssl.conf
(2) Aby być bardzo przejrzystym, jeśli nadal masz problemy, spróbujAllowOverride All
zamiastAllowOverride FileInfo
. Gdy już zaczniesz działać, możesz szczegółowo przeczytaćAllowOveride
dokumenty Apache, aby bardziej szczegółowo ograniczyć dostęp i zmaksymalizować bezpieczeństwo. (3) Pamiętaj, że musisz ponownie uruchomić apache, aby ustawienia odniosły skutek.Czy to możliwe, że mod_rewrite nie jest włączony dla serwera HTTPS lub że plik .htaccess nie jest używany?
Sprawdź używane
AllowOveride
uprawnienia dla zwykłej witryny i porównaj z wersją SSL, prawdopodobnie rozbieżność. Prawdopodobnie wprowadzony w celu poprawy bezpieczeństwa, jeśli nie wypadek.mod_rewrite
jest jednak niezbędny, więc każdy porządny dostawca hostingu powinien to rozwiązać.źródło
„działa na apache2 + precyzyjny ubuntu”
Podobny problem wystąpił podczas korzystania ze środowiska Slim i próbowania usunięcia pliku index.php wymaganego w adresie URL. ReWrite działało idealnie dla http, ale dla https: pokazywał, że nie znaleziono adresu URL, co oznaczało, że reWrite nie działa.
Po kilku próbach trafiłem na to rozwiązanie:
Zmień AllowOverride None na All . Podobnie sudo vim ssl
źródło
Miałem podobny problem, to działało dla mnie.
Upewnij się, że w httpd.conf masz oba:
NazwaSerwera domena.com
ServerAlias www.domain.com
źródło