Autor Zpráva
Giga
Profil
Pánové, prosím o radu.

Mám na stránce .htaccess


RewriteEngine On

RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R=301,L] 
Header set Content-Security-Policy "upgrade-insecure-requests;"

# cele domeny (aliasy)
RewriteCond %{REQUEST_URI} !^domains/
RewriteCond %{REQUEST_URI} !^/domains/
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)$
RewriteCond %{DOCUMENT_ROOT}/domains/%2 -d
RewriteRule (.*) domains/%2/$1 [DPI]

# subdomeny (s nebo bez www na zacatku)
RewriteCond %{REQUEST_URI} !^subdom/
RewriteCond %{REQUEST_URI} !^/subdom/
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)\.([^\.]*)\.([^\.]*)$
RewriteCond %{DOCUMENT_ROOT}/subdom/%2 -d
RewriteRule (.*) subdom/%2/$1 [DPI]

# aliasy - spravne presmerovani pri chybejicim /
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^domains/[^/]+/(.+[^/])$ /$1/ [R]

# subdomeny - spravne presmerovani pri chybejicim /
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^subdom/[^/]+/(.+[^/])$ /$1/ [R]

<IfModule mod_expires.c>
ExpiresActive Off

</IfModule>


Potřeboval bych vytvořit výjimku.
Pro jeden skript potřebuji nezabezpečený přistup.
Vytvořil jsem subdoménu kde je skript umístněn.
Nevím, jak v .htaccess vytvořit pravidlo které zabezpečí,
že adresa jednoho konkrétního skriptu (případně subdomény) s http nebude přesměrována na https.
Kajman
Profil
Před třetí řádek si můžete dát nějaká pravidla, která při shodě přeskočí X následujích pravidel (tedy potřebujete přeskočit jedno následující pravidlo pro https).

Něco jako

RewriteEngine On

RewriteCond %{HTTP_HOST} ^(www\.)?nezabezpecena\.domena\.cz$
RewriteRule ^(/?subdom/nezabezpecena\.domena\.cz/)?nazev\.skriptu$ - [S=1]

RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=301,L,NE] 

A u toho přesměrování to funguje pro všechny domény a subdomény korektně? Nemá tam být místo názvu serveru název domény? A protože používáte 301, prohlížeč si to může pamatovat, tak bude složitější ověřit, jestli se to změnilo. Pro testy si tam dejte 302 a asi použijte jiný prohlížeč.
Giga
Profil
Děkuji za reakci.

Upravil jsem .htaccess na

RewriteEngine On

RewriteCond %{HTTP_HOST} ^(www\.)?domena\.cz$
RewriteRule ^(/?pocko/domena\.cz/)?myweather/updateweatherstation.php$ - [S=1]

RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R=301,L] 
Header set Content-Security-Policy "upgrade-insecure-requests;"

# cele domeny (aliasy)
RewriteCond %{REQUEST_URI} !^domains/
RewriteCond %{REQUEST_URI} !^/domains/
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)$
RewriteCond %{DOCUMENT_ROOT}/domains/%2 -d
RewriteRule (.*) domains/%2/$1 [DPI]

# subdomeny (s nebo bez www na zacatku)
RewriteCond %{REQUEST_URI} !^subdom/
RewriteCond %{REQUEST_URI} !^/subdom/
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)\.([^\.]*)\.([^\.]*)$
RewriteCond %{DOCUMENT_ROOT}/subdom/%2 -d
RewriteRule (.*) subdom/%2/$1 [DPI]

# aliasy - spravne presmerovani pri chybejicim /
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^domains/[^/]+/(.+[^/])$ /$1/ [R]

# subdomeny - spravne presmerovani pri chybejicim /
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^subdom/[^/]+/(.+[^/])$ /$1/ [R]

<IfModule mod_expires.c>
ExpiresActive Off

</IfModule>

bez kýženého výsledku.

Počítám, že mám zmatek v lomítkách a opačných lomítkách.
Konkrétní skript má adresu:
http://pocko.domena.cz/myweather/updateweatherstation.php?parametry
Kajman
Profil
Zmatek máte v doménách. To pocko má být místo nezabezpecena. Ale bez konkrétní domény lépe poradit nelze. Musíte si to napsat sám podle příkladu. Také je důležité, jestli to pak máte zanořené v subdom nebo domains - to možné zanoření skriptu v některém z těchto adresářů při druhém průchodu jste odstranil úplně.

A jednoduchá výjimka pro celou doménu funguje?
Giga
Profil
Kajmane, máš štěstí, že nesedíš vedle mne.
Pusu bych Ti dal!
:D

Klaním se a mnohokrát děkuji za
a.) trpělivost
b.) přehled o proběhlé diskusi

"Vyjímka pro celou doménu" je funkční řešení.
Kajman
Profil
V takovém případě je špatně podmínka na ten jeden konkrétní soubor, pokud to bez omezení na cestu funguje pro všechny požadavky.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0