Valentínska akcia je tu! Získaj až 80 % extra kreditov ZADARMO na náš interaktívny e-learning. ZISTIŤ VIAC:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia: .htaccess a zmena http na https

Aktivity
Avatar
Miroslav Tomašovič:5.12.2017 9:33

Dobrý deň páni,

mám web s výrobkami, ktorý prepisuje dynamické adresy typu "domena.sk/in­dex.php?act=vi­ewProd&produc­tId=46190" na statické "domena.sk/moj-nazov-vyrobku/prod_4619­0.html" prostredníctvom tohto kódu v .htaccess:

RewriteEngine On
RewriteCond %{QUERY_STRING} (.+)
RewriteRule prod_(.*).html index.php?act=viewProd&productId=$1&%1 [L]
RewriteRule prod_(.*).html index.php?act=viewProd&productId=$1 [L]

V rámci prechodu na SSL certifikát potrebujem zmeniť http protokol na https, čo robím podľa odporúčania poskytovateľa webhostingu pomocou nasledujúceho kódu v súbore .htaccess:

RewriteEngine on
RewriteCond %{HTTP:X-Forwarded-Proto} !=https
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

Bohužiaľ, akonáhle pridám do súboru tento kód, web síce funguje v https, ale nedochádza k prepisu dynamických adries na statické. Je pritom jedno, či kód umiestnim na začiatok, alebo koniec súboru .htaccess.

Neviete, v čom môže byť problém?

Ďakujem.

 
Odpovedať
5.12.2017 9:33
Avatar
martin.93
Člen
Avatar
Odpovedá na Miroslav Tomašovič
martin.93:5.12.2017 14:52

Zkus tenhle třeba ti to pomůže

RewriteEngine On
RewriteBase /

RewriteCond %{ENV:HTTPS} !^.*on
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
Editované
 
Hore Odpovedať
5.12.2017 14:52
Avatar
Petr Čech
Tvůrce
Avatar
Petr Čech:5.12.2017 15:36

Různé servery (tedy spíš hostingy) mají různé prostředky pro vyjádření, jestli je to HTTPS požadavek, nebo ne. Kde to běží?

Hore Odpovedať
5.12.2017 15:36
the cake is a lie
Avatar
Odpovedá na martin.93
Miroslav Tomašovič:5.12.2017 16:33

martin.93:
Ďakujem, skúsil som a správa sa to stále rovnako. :-S
Teda https beží správne, ale prepis dynamickej url na statickú nejde.

 
Hore Odpovedať
5.12.2017 16:33
Avatar
Odpovedá na Petr Čech
Miroslav Tomašovič:5.12.2017 16:41

Mám to na Websupporte, postupoval som podľa ich návodu (bod 2. a) ):
https://www.websupport.sk/…ifik%C3%A1tu

Čiže keď to zhrniem, ak web beží na http, prepis dynamických url na statické funguje správne.
Akonáhle doplním kód so zmenou na https, stránka beží na https, ale zmena dynamických url na statické prestane fungovať :-S

 
Hore Odpovedať
5.12.2017 16:41
Avatar
Odpovedá na Miroslav Tomašovič
Neaktivní uživatel:5.12.2017 20:44

Jak vypadá celý htaccess (nebo alespoň naše https a rewrite část, pokud je zbytek tajný)?

Hore Odpovedať
5.12.2017 20:44
Neaktivní uživatelský účet
Avatar
Neaktivní uživatel:5.12.2017 22:11

mozna to prehodit misty? nejdriv https potom prepis? jen tak me to napadlo :D

Hore Odpovedať
5.12.2017 22:11
Neaktivní uživatelský účet
Avatar
Odpovedá na Neaktivní uživatel
Miroslav Tomašovič:6.12.2017 9:12

Toto je celý .htaccess:

RewriteEngine on
RewriteCond %{HTTP:X-Forwarded-Proto} !=https
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

RewriteEngine On
RewriteCond %{QUERY_STRING} (.+)
RewriteRule cat_(.*).html index.php?act=viewCat&catId=$1&%1 [L]
RewriteRule cat_(.*).html index.php?act=viewCat&catId=$1 [L]
RewriteCond %{QUERY_STRING} (.+)
RewriteRule prod_(.*).html index.php?act=viewProd&productId=$1&%1 [L]
RewriteRule prod_(.*).html index.php?act=viewProd&productId=$1 [L]
RewriteCond %{QUERY_STRING} (.+)
RewriteRule info_(.*).html index.php?act=viewDoc&docId=$1&%1 [L]
RewriteRule info_(.*).html index.php?act=viewDoc&docId=$1 [L]
RewriteCond %{QUERY_STRING} (.+)
RewriteRule tell_(.*).html index.php?act=taf&productId=$1&%1 [L]
RewriteRule tell_(.*).html index.php?act=taf&productId=$1 [L]
 
Hore Odpovedať
6.12.2017 9:12
Avatar
Odpovedá na Neaktivní uživatel
Miroslav Tomašovič:6.12.2017 9:13

Skúšal som to prehodiť a vôbec to nezaberá. Slále sa to správa rovnako :-@

 
Hore Odpovedať
6.12.2017 9:13
Avatar
Odpovedá na Miroslav Tomašovič
Neaktivní uživatel:6.12.2017 14:53

Zkus odebrat 1x RewriteEngine On(to druhe)

Editované
Hore Odpovedať
6.12.2017 14:53
Neaktivní uživatelský účet
Avatar
Odpovedá na Neaktivní uživatel
Miroslav Tomašovič:6.12.2017 19:45

Skúsil som a nepomohlo :-S

Editované
 
Hore Odpovedať
6.12.2017 19:45
Avatar
Miroslav Tomašovič:7.12.2017 9:24

Tak vás všetkých zdravím páni.
Nakoniec som sa rozhodol pátrať v PHP kóde môjho webu a v súbore nazvanom xtpl.php som narazil na tento kód:

/* <rf> search engine friendly mod */
global $glob, $config;
include_once($glob['rootDir']."/includes/sef_urls.inc.php");

$copy = $this->text($bname);
if(!detectSSL()) {
        $copy = sef_rewrite_urls($copy);
}

echo $copy;
/* <rf> end mod */

Jednoducho som zmenil zápornú podmienku na kladnú:

if(detectSSL()) {

A ono to funguje.

Takže nakoniec problém nebol v samotnom .htaccess.
Viem, že moje riešenie je amatérske v rámci mojich veľmi obmedzených znalostí PHP, ale zatiaľ funguje.

Tak idem skúšať ďalej, či je všetko OK.

Ďakujem vám všetkým za pomoc ;-)

 
Hore Odpovedať
7.12.2017 9:24
Avatar
Miroslav Tomašovič:9.12.2017 15:31

Ešte ma predsa len napadla jedna vec.
Kvôli zamedzeniu duplicity som celý web presmeroval na verziu s www týmto kódom:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^domena.sk [NC]
RewriteRule ^(.*)$ http://www.domena.sk/$1 [L,R=301]

Jednu url však potrebujem mať bez www, konkrétne: "https://dome­na.sk/cart.php?ac­t=step4"

Neviete prosím, ako to spraviť v .htaccess?

Ďakujem.

Editované
 
Hore Odpovedať
9.12.2017 15:31
Avatar
Neaktivní uživatel:9.12.2017 16:13

Proč přesměrovávat na www a né na verzi bez www? Měl jsem vždy problémy s www verzi(např. cloudflare a https)

Hore Odpovedať
9.12.2017 16:13
Neaktivní uživatelský účet
Avatar
Odpovedá na Neaktivní uživatel
Miroslav Tomašovič:9.12.2017 17:31

Ahoj, úprimne sám neviem. Prečítal som si veľa článkov čo je lepšie z pohľadu SEO a niektoré preferovali verziu s www kvôli tomu, že väčšina ľudí je jednoducho na to zvyknutá. Keď som si spravil analýzu najznámejších zahraničných a domácich webov, takmer všetky sú s www (amazon, facebook, alza, mall, wikipedia, ebay, aliexpress, paypal atď.). To je môj jediný dôvod.

 
Hore Odpovedať
9.12.2017 17:31
Avatar
Uživatel sítě :9.12.2017 18:33

Z hlediska SEO mezi oběma variantami není žádný rozdíl, jde pouze o to co preferuje webmaster.

Z technického hlediska pro www je lepší práce s cookinami kvůli případným subdoménám, apod..

Z praktického/u­živatelského hlediska většina lidí preferuje bez www kvůli zapamatovatelnosti.

Hore Odpovedať
9.12.2017 18:33
Chybami se člověk učí, běžte se učit jinam!
Avatar
Miroslav Tomašovič:10.12.2017 18:58

OK páni a keď sa teda vrátim k .htaccess, je možné celý web presmerovať na www a len jednu konkrétnu url bez www?

 
Hore Odpovedať
10.12.2017 18:58
Avatar
Neaktivní uživatel:10.12.2017 20:25

Přidat rewrite condition
RewriteCond %{HTTP_HOST} !^domena.sk [NC]

Hore Odpovedať
10.12.2017 20:25
Neaktivní uživatelský účet
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 18 správy z 18.