web-dev-qa-db-fra.com

htaccess force HTTPS sauf une page

Ceci est mon fichier .htaccess actuel:

RewriteEngine On
ErrorDocument 404 /404.html
# 1
RewriteRule ^extra/([0-9]+)/(.*).html?$ pages.php?do=view&id=$1
RewriteRule ^special-bonus/([0-9]+)/(.*).html?$ pages.php?do=bonus&id=$1
RewriteRule ^thankyou/(.*).html?$ static.php?do=thankyou&prod=$1
# 2
RewriteRule ^list.html pages.php?do=list
RewriteRule ^about.html static.php?do=about
# 3
RewriteRule ^404.html static.php?do=404
RewriteRule ^room.html room.php
# 4
RewriteRule ^sitemap.xml sitemap.php

Je voudrais forcer HTTPS (SSL) sur toutes les pages sauf room.html. Comment puis je faire ça? J'utilise Apache HTTP Server (version 2.2.x).

Pour forcer HTTPS sur chaque page que j'utilisais:

RewriteEngine On
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.mycookiedomain.com/$1 [R,L]

Cela fonctionnait très bien, mais maintenant je dois faire des changements pour que cela fonctionne sur toutes les pages sauf room.html et je ne sais pas comment faire cela.

4
Cassie Kasandr

En utilisant votre exemple, vous pouvez utiliser un out dans votre code.

RewriteEngine On
# Go to https if not on room.html
RewriteCond %{SERVER_PORT} 80 
RewriteCond %{REQUEST_URI} !^/room.html$ [NC]
RewriteRule ^(.*)$ https://www.mycookiedomain.com/$1 [R,L]

# Go to http if you are on room.html
RewriteCond %{SERVER_PORT} !80 
RewriteCond %{REQUEST_URI} ^/room.html$ [NC]
RewriteRule ^(.*)$ http://www.mycookiedomain.com/$1 [R,L]

Vous devrez probablement adapter cela un peu à vos besoins, mais cet exemple est au moins proche.

4
closetnoc

Cela ne devient pas beaucoup plus simple que cela. Vous pouvez utiliser les fichiers PHP pour les documents d'erreur au lieu des fichiers HTML. Par conséquent, aucune de vos lignes n'est requise. De plus, j'ai simplifié et corrigé la réécriture et la réécriture. La seule condition que vous vérifiez réellement est de vérifier si la connexion est établie sur le port HTTP standard. Si c'est le cas, remplacez la demande dans room.html par room.php sur mycookiedomain.com et le fait que vous passez de HTTP à HTTP. sécurisé, vous devez utiliser une redirection réelle (code de statut 301) au lieu de la valeur 302 par défaut.

De plus, pour de meilleurs résultats, assurez-vous que tous les fichiers mentionnés, ainsi que .htaccess, se trouvent dans le même dossier.

ErrorDocument 404 static.php?do=404

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^room.html$ https://www.mycookiedomain.com/room.php [R=301,L]

RewriteRule ^extra/([0-9]+)/(.*).html?$ pages.php?do=view&id=$1
RewriteRule ^special-bonus/([0-9]+)/(.*).html?$ pages.php?do=bonus&id=$1
RewriteRule ^thankyou/(.*).html?$ static.php?do=thankyou&prod=$1

RewriteRule ^list.html pages.php?do=list
RewriteRule ^about.html static.php?do=about

RewriteRule ^sitemap.xml sitemap.php
0
Mike