2009-07-25 3 views
0

Désolé si cela a été demandé auparavant, mais je ne pouvais pas le trouver. J'ai un dossier qui quand je visite des charges dans HTTPS et HTTP.Mod_Rewrite Forcer HTTP sur tous les fichiers sauf un

Je souhaite que tous les fichiers de ce dossier soient chargés dans HTTP à l'exception d'un fichier. Le fichier dont j'ai besoin dans HTTPS est: login.php et ce dossier s'appelle "forum". Aussi, si cela aide: Tous les fichiers dans le dossier sont * .php.

Je cherchais quelque chose le long des lignes de:

#RewriteCond %{SERVER_PORT} !^443$ 
#RewriteRule ^/login.php$ - [L] 

#RewriteCond %{SERVER_PORT} ^443$ 
#RewriteRule ^(/login.php) $ https://%{HTTP_HOST}/$1 [QSA,NC,R,L] 

#RewriteCond %{SERVER_PORT} !^443$ 
#RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [QSA,NC,R,L] 

Je suis un peu d'un amateur en matière de mod_rewrite alors pardonnez-moi si ce qui précède est complètement éteint. Aussi, si vous publiez une solution, je vous serais reconnaissant si vous postez avec une explication afin que je puisse réellement apprendre comment cela fonctionne.

Merci d'avance! David

+0

Faut-il supposer que vous aviez jamais les lignes commenté quand vous "essayez"? – MitMaro

+0

Oui, ils n'étaient pas commentés en essayant. Désolé, je viens de copier les lignes du fichier conf après les avoir désactivées quand j'ai vu que ça ne fonctionnait pas. –

Répondre

1

pour cette solution:

Options +FollowSymLinks 
RewriteEngine On 


# port 443 traffic to http://, except login.php 
RewriteCond %{SERVER_PORT} ^443$ 
RewriteCond %{REQUEST_URI} !^/login\.php$ [NC] 
RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

# port 80 traffic for login.php to https:// 
RewriteCond %{SERVER_PORT} ^80$ 
RewriteCond %{REQUEST_URI} ^/login\.php$ [NC] 
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
+0

Je suis en train d'effectuer une migration pour le moment, donc j'essaierai cela dès que j'aurai fini. Merci! –

+0

Quelque chose semble se produire, mais cela ne fonctionne pas exactement. Maintenant, le forum se charge toujours sous HTTPS, ce qui signifie que l'index.php le fait, mais dès que je clique sur un lien de forum, j'obtiens une ERREUR, qui "n'existe pas". Il se charge très bien si je vais dans HTTP. Cela pourrait avoir quelque chose à voir avec le SEO Mod que j'ai installé? Néanmoins, les règles SEO sont en dessous de celles-ci. Donc, ils devraient être lus en premier droit? Si vous voulez voir ce qui se passe: http (s): //www.redbid.com/forum/. Salutations –

+0

ne suis pas sûr à 100% ma réponse est correcte, je suis afaid. Je n'ai aucune idée de SEO Mod. Je pensais que les règles de réécriture que je donnais devraient rediriger le trafic https pour n'importe quelle page à l'exception de /login.php à http. Je pourrais être en mesure de vous aider si vous pouviez poster les journaux d'erreurs du serveur. –

0

Essayez ces règles:

RewriteCond %{SERVER_PORT} !=443 
RewriteRule ^login\.php$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

RewriteCond %{SERVER_PORT} !=80 
RewriteRule !^login\.php$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 
+0

Salut Gumbo, merci pour votre contribution. Cependant le même problème se produit comme dans la solution mentionnée ci-dessus. Avec ou sans le SEO Mod activé. D'autres pensées? A bientôt –

+0

Avez-vous mis ces règles avant ou après vos autres règles? Si ce n'est pas avant, faites-le. – Gumbo