Autor Zpráva
Sobky
Profil
Zdravím, potreboval by som súrne pomoc pri .htaccess súbore.

Web mám momentálne zablokovaný pre verejnosť a prístup tam mám iba ja. No potrebujem odtestovať, či fungujú scripty volané z tretích strán(Script po vykonaní platby).
No stále tam web ten script nepustí. Už som aj žiadal o IP od prevádzkovateľov aby som ich povolil. Čo všetko je k tomu potrebné? Alebo sa takéto scripty povolujú inak?

.htaccess súbor
Order Allow,Deny
Allow from MOJA_IP

<Files Script.php>
    Allow from all
</Files>
Kajman
Profil
Zkuste pro ten soubore přenastavit obrácené order, pokud někde máte deny form all.

<Files Script.php>
    Order Deny,Allow
    Allow from all
</Files>
Sobky
Profil
Ani takto to nefunguje. Nemôže tam byť problém v tom, že ten súbor Script.php je uložený v pod-adresári? Netreba aj ten povoliť?
Slark
Profil
Pokud je soubor v podadresáři tak můžete v tomto adresáři vytvořit vlastní soubor .htaccess a do něj dáte pravidlo Allow from all
Sobky
Profil
Ja už fakt neviem... Aj som dal .htaccess do toho priečinku a aj tak nič. Keď to načítam ja z mojho PC napriek tomu, že zablokujem prístup úplne. Tak ma to pustí. Ale akonáhle to zavolám z inej stránky, nech to odtestuje, tak to nejde...
Kajman
Profil
A máte na tom serveru .htaccess vůbec povolené? Mrkněte do konfigurace serveru na nastavení AllowOverride a případně i na to, zda to (ne)blokování není zadáno tam.
Sobky
Profil
Htacces sú určite povolené, https mi cez to funguje, aj ostatné viac čo tam mám. No pozriem sa ešte na to druhé.
Sobky
Profil
Zdravím, prepáčte, že zas otváram túto tému, ale už som web povolil aj pre verejnosť a aj tak ma to nechce pustiť.

Pre testovaní scriptu dostanem odpoveď: Očekávaný HTTP status 200. Navrácený HTTP status 302!
Je možné, že to robí, prepis z http na https? Pretože, keď zadám url adresu s https, nespustí sa to vôbec.
Posielam https nastavenie z .htaccess
RewriteEngine On

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}
Kajman
Profil
Kód 302 bude asi opravdu díky tomu poslednímu pravidlu.

Otázka je, proč se nezobrazí to, na co se přesměruje.

Blokace může být na serveru nebo v prohlížeči. Mrkněte do logů apache - ssl variantu. Mohl by tam být i důvod chyby.
(např. v konfiguraci apache se nastavení pro https upřesňují často v samostatném souboru (ssl.conf) - může být zákaz IP tam)

Pokud požadavek na server vůbec nedorazí, může ho blokvat již prohlížeč. To by mělo být vidět ve vývojářských nástrojích (hodně prohlížečů je má dostupné po F12 a tam zvolit záložku síť a přepnout zachování logu). Může to být tím, že certifikát nevyhodnotí prohlížeč jako důvěryhodný, nebo se se serverem nedomluví na žádném společně používaném protokolu.

Zkuste tedy mrknout na log serveru i do konzole (raději více různých) prohlížečů a případně pošlete, co tam najdete.
Sobky
Profil
Tak povolil som si logy na hostingu ale žiadne errory to nevypisuje. To že script je zavolaný zaznamená v access logu. Ale nevykoná sa. S prehliadačom to nemá nič spoločné. Keď to ja zavolám tak sa všetko vykoná správne.
Sobky
Profil
To asi nepôjde vyriešiť takto. Je nejaká možnosť, že daný súbor sa neprevedie na HTTPS a ostane len na HTTP?
Kajman
Profil
Ano, pokud sem nepošlete log ze serveru i prohlížeče, tak se radit nedá. Leda, ať kontaktujete podporu hostingu.
Sobky
Profil
Chyba je určite v tom, že sa volaný script s HTTP zmení na HTTPS. Tam nastane problém... Ti scripty sú volané z tretích strán. No ak ide spraviť tá možnosť čo som spomínal vyššie, tak by som bol vďačný za napísanie ako to vyriešiť.
Keeehi
Profil
Sobky:
Ti scripty sú volané z tretích strán.
No evidentně ta třetí strana nepodporuje přesměrovávání. Takže jí musíš zadat už výslednou URL. Tedy rovnou tu s https.
Sobky
Profil
To bolo ako prvé, čo som urobil. Lenže ako keby to nepodporovali. Preto, jediné čo mi ostáva, je spraviť výnimku a daný súbor neprepísať na https.
Kajman
Profil
Výjimka pro přesměrování by mohla vypadat např. takto


RewriteEngine On

#preskoc nasledujici dve RewriteRule
RewriteRule script\.php$ - [S=2]
 
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE]
 
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,NE]

Edit: doplněn chybějící druhý parametr na řádku 4
Keeehi
Profil
Sobky:
To bolo ako prvé, čo som urobil. Lenže ako keby to nepodporovali.
Tomu se mi moc nechce věřit. Není k tomu důvod. Navíc dnešní trend je spíš vyžadovat https než ho aktivně blokovat. Jakou chybovou hlášku ti ukáže ta aplikace třetí strany, pokud jí dáš tu adresu s https?
Sobky
Profil
Keeehi:
Ja som to tiež nečakal. Na jeden stránke som zadal s https a napísalo, že mám použiť http. A na tej druhej vyhodilo "Pri testovani doslo k chybe!" ale keď to zam zadám s http vykoná sa toho viac.

Kajman:
Hneď ráno to vyskúšam a dám vedieť.
Sobky
Profil
Keď som to zadal, tak mi vypísalo toto: The requested URL /[S=2] was not found on this server.
A keď tam zadám cestu aj s podpreičinkami, tak už no nenapíše, ale zmení sa URL na https


Tak už sa mi to podarilo.

RewriteEngine On

#len prepíše na www ak nie je
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE]

#prepíše na https okrem skript.php
RewriteCond %{HTTPS} off
RewriteCond %{THE_REQUEST} !skript\.php [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,NE]

Ďakujem vám za pomoc :)

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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