/ / Apache .htaccess presmerovanie https na http a naopak - .htaccess, mod-rewrite, apache2

Apache .htaccess presmerovanie https na http a naopak - .htaccess, mod-rewrite, apache2

Snažím sa dostať inštaláciu drupal 7 na presmerovanietri stránky na https a vynútiť všetko ostatné späť na http. Samostatne, tu funguje prvé pravidlo prepisovania. Ak je oba povolené, nič nefunguje a všetko sa presmeruje späť na /index.php

# Turn SSL on for checkout except for checkout, signup/login and user/login
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} ^(/checkout)$ [NC,OR]
RewriteCond %{REQUEST_URI} ^(/signup/login)$ [NC,OR]
RewriteCond %{REQUEST_URI} ^(/user/login)$ [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

# Turn SSL off everything but checkout, signup/login and user/login
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !(checkout|signup/login|user/login) [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]

odpovede:

0 pre odpoveď č. 1

Vyzerá to správne a pravidlá pre mňa fungujú. Odkedy prvé pravidlo funguje, budem predpokladať RewriteEngine on je niekde nad týmito pravidlami. Existujú ďalšie pravidlá vo vašich súboroch htaccess? Môže to byť niečo iné, čo spôsobuje problém.

Pokúsil som sa dodržiavať tieto pravidlá a presmerovať ich, ako očakávajú obaja. Absencia pravidla HTTPS by nemala mať vplyv.

RewriteEngine on

# Turn SSL on for checkout except for checkout, signup/login and user/login
RewriteCond %{REQUEST_URI} ^(/checkout)$ [NC,OR]
RewriteCond %{REQUEST_URI} ^(/signup/login)$ [NC,OR]
RewriteCond %{REQUEST_URI} ^(/user/login)$ [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}/ssl/$1 [R=301,L]

# Turn SSL off everything but checkout, signup/login and user/login
RewriteCond %{REQUEST_URI} !(checkout|signup/login|user/login) [NC]
RewriteRule ^ssl/(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]

Tieto súbory som nastavil na testovanie pomocou:

  • public /
    • checkout (obsah: pokladňa)
    • foobar (obsah: foobar)
    • Prihlásiť Se/
      • prihlásenie (obsah: registrácia / prihlásenie)
    • user /
      • prihlásenie (obsah: používateľ / prihlásenie)
    • ssl /
      • checkout (obsah: ssl checkout)
      • foobar (obsah: ssl foobar)
      • Prihlásiť Se/
        • prihlásenie (obsah: registrácia / prihlásenie ssl)
      • user /
        • prihlásenie (obsah: používateľ ssl / prihlásenie)

Môžete vyskúšať tieto pravidlá a vidieť, ako fungujú podľa očakávania:

$ curl -L http://samhuri.net/checkout
ssl checkout
$ curl -L http://samhuri.net/ssl/checkout
ssl checkout
$ curl -L http://samhuri.net/foobar
foobar
$ curl -L http://samhuri.net/ssl/foobar
foobar

priechod curl na -i príznak na zobrazenie hlavičiek a stavových kódov.

Takže mám podozrenie, že je niečo zlé. Máte nejaké ďalšie pravidlá na presmerovanie na alebo z https?