Perché i reindirizzamenti .htaccess funzionano in http ma non con https?


10

Ho un semplice file .htaccess che funziona alla grande sulla versione http del sito ma non quando vado su https. Perché?

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]

Risposte:


20

Non ci sono abbastanza informazioni al 100% qui per continuare, ma nella solita configurazione SSL predefinita (ad esempio Red Hat / CentOS / Fedora) VirtualHost per SSL è impostato nel suo contenitore. L'uso di mod_rewrite richiede almeno "AllowOverride FileInfo" da impostare sulla radice del documento affinché funzioni.

Controlla la tua configurazione per SSL (/etc/httpd/conf.d/ssl.conf per impostazione predefinita), assicurati che assomigli a:

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

Il valore predefinito per AllowOverride è "Nessuno", quindi qualsiasi altra impostazione (come "Tutto") che aggiunge le funzionalità di FileInfo è OK.

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


1
Non riesco a vedere /etc/httpd/conf.d/ssl.conf nel mio Linux, come trovarlo?
Ashok KS,

1
(1) Potrebbe essere necessario cercare il file conf. Ad esempio, su alcuni sistemi è /etc/apache2/sites-enabled/default-ssl.conf(2) Per essere super-chiaro, se hai ancora problemi, prova AllowOverride Allinvece di AllowOverride FileInfo. Una volta che lo fai funzionare, puoi leggere i AllowOveridedocumenti Apache in dettaglio per limitare l'accesso in modo più specifico per massimizzare la sicurezza. (3) Ricorda che devi riavviare apache per rendere effettive le impostazioni.
SilentSteel,

4

È possibile che mod_rewrite non sia abilitato per il server HTTPS o che non sia utilizzato il file .htaccess?

Controlla le AllowOverideautorizzazioni in uso per il sito normale e confronta con la versione SSL, probabilmente una discrepanza. Probabilmente introdotto per migliorare la sicurezza, se non un incidente.

mod_rewrite è quasi essenziale, quindi qualsiasi fornitore di hosting decente dovrebbe aiutare a risolvere questo problema.


1

"lavorando su apache2 + ubuntu precise"

Un problema simile si è verificato durante l'utilizzo di Slim framework e nel tentativo di rimuovere l'indice.php richiesto nell'URL. ReWrite ha funzionato perfettamente per http ma per https: mostrava l'URL non trovato, il che significa che reWrite non funzionava.

Dopo un po 'di hit-n-trial, ho trovato questa soluzione:

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

Cambia AllowOverride None su All . Allo stesso modo sudo vim ssl


0

Ho avuto un problema simile, questo è ciò che ha funzionato per me.

Nel tuo httpd.conf, assicurati di avere entrambi:

ServerName domain.com

ServerAlias ​​www.domain.com

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.