¿Por qué los redireccionamientos .htaccess funcionan en http pero no con https?


10

Tengo un archivo .htaccess simple que funciona muy bien en la versión http del sitio, pero no cuando voy a 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]

Respuestas:


20

No hay información 100% suficiente aquí para continuar, pero en la configuración SSL predeterminada habitual (Red Hat / CentOS / Fedora, por ejemplo), el VirtualHost para SSL está configurado en su propio contenedor. El uso de mod_rewrite requiere como mínimo que se establezca "AllowOverride FileInfo" en la raíz del documento para que actúe.

Verifique su configuración para SSL (/etc/httpd/conf.d/ssl.conf por defecto), asegúrese de que se vea algo así como:

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

El valor predeterminado para AllowOverride es 'Ninguno', por lo que cualquier otra configuración (como 'Todos') que agrega capacidades de FileInfo está bien.

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


1
No puedo ver /etc/httpd/conf.d/ssl.conf en mi linux, ¿cómo encontrarlo?
Ashok KS

1
(1) Es posible que deba buscar el archivo conf. Por ejemplo, en algunos sistemas es /etc/apache2/sites-enabled/default-ssl.conf(2) Para ser súper claro, si aún tiene problemas, intente en AllowOverride Alllugar de hacerlo AllowOverride FileInfo. Una vez que lo haga funcionar, puede leer los AllowOveridedocumentos de Apache en detalle para limitar el acceso más específicamente y maximizar la seguridad. (3) Recuerde que debe reiniciar Apache para que la configuración surta efecto.
SilentSteel

4

¿Podría ser posible que mod_rewrite no esté habilitado para el servidor HTTPS o que .htaccess no se esté utilizando?

Verifique los AllowOveridepermisos en uso para el sitio normal y compárelos con la versión SSL, probablemente una discrepancia. Probablemente introducido para mejorar la seguridad, si no un accidente.

mod_rewrite Sin embargo, es casi esencial, por lo que cualquier proveedor de alojamiento decente debería ayudar a resolver esto.


1

"trabajando en apache2 + ubuntu precisa"

Me ocurrió un problema similar mientras usaba Slim Framework y trataba de eliminar el index.php requerido en la url. ReWrite funcionó perfectamente para http pero para https: mostraba url no encontrada, lo que significaba que reWrite no funcionaba.

Después de un hit-n-trial, se me ocurrió esta solución:

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

Cambie AllowOverride None a All . Del mismo modo sudo vim ssl


0

Tuve un problema similar, esto es lo que funcionó para mí.

En su httpd.conf, asegúrese de tener ambos:

ServerName domain.com

ServerAlias ​​www.dominio.com

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.