Por que o .htaccess redireciona o trabalho em http, mas não em https?

9

Eu tenho um arquivo .htaccess simples que funciona muito bem na versão http do site, mas não quando vou para https. Por quê?

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]
    
por Sheldon McGee 26.01.2011 / 01:27

4 respostas

20

Não há 100% de informação suficiente para continuar, mas na configuração SSL padrão usual (Red Hat / CentOS / Fedora, por exemplo) o VirtualHost para SSL é configurado em seu próprio contêiner. O uso de mod_rewrite requer, no mínimo, que "AllowOverride FileInfo" seja definido na raiz do documento para que ele aja.

Verifique sua configuração para SSL (/etc/httpd/conf.d/ssl.conf por padrão), verifique se ela se parece com:

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

O padrão para AllowOverride é 'None', portanto, qualquer outra configuração (como 'All') que adicione recursos FileInfo é OK.

link

    
por 26.01.2011 / 01:48
4

Poderia ser possível que o mod_rewrite não esteja habilitado para o servidor HTTPS, ou que o .htaccess não esteja sendo usado?

Verifique as permissões AllowOveride em uso para o site normal e compare com a versão SSL, provavelmente uma discrepância. Provavelmente introduzido para melhorar a segurança, se não um acidente.

No entanto,

mod_rewrite é quase essencial, portanto, qualquer provedor de hospedagem decente deve ajudar a resolver isso.

    
por 26.01.2011 / 01:50
1

"trabalhando em apache2 + ubuntu accurate"

Um problema similar ocorreu enquanto eu estava usando Slim framework e tentando remover o index.php requerido no url. A reescrita funcionou perfeitamente para http, mas para https: estava mostrando url não encontrado, o que significava que a reescrita não estava funcionando.

Depois de alguns testes de sucesso, descobri esta solução:

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

Altere AllowOverride None para All . Da mesma forma sudo vim ssl

    
por 22.07.2013 / 15:12
0

Eu tive problema semelhante, isso é o que funcionou para mim.

No seu httpd.conf, verifique se você tem os dois:

ServerName domain.com

ServerAlias www.domain.com

    
por 02.12.2013 / 04:41