NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: .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.

 
Odpovědět
5.12.2017 9:33
Avatar
martin.93
Člen
Avatar
Odpovídá 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]
Editováno 5.12.2017 14:54
 
Nahoru Odpovědět
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ěží?

Nahoru Odpovědět
5.12.2017 15:36
the cake is a lie
Avatar
Odpovídá 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.

 
Nahoru Odpovědět
5.12.2017 16:33
Avatar
Odpovídá 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

 
Nahoru Odpovědět
5.12.2017 16:41
Avatar
Odpovídá 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ý)?

Nahoru Odpovědět
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

Nahoru Odpovědět
5.12.2017 22:11
Neaktivní uživatelský účet
Avatar
Odpovídá 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]
 
Nahoru Odpovědět
6.12.2017 9:12
Avatar
Odpovídá 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 :-@

 
Nahoru Odpovědět
6.12.2017 9:13
Avatar
Odpovídá na Miroslav Tomašovič
Neaktivní uživatel:6.12.2017 14:53

Zkus odebrat 1x RewriteEngine On(to druhe)

Editováno 6.12.2017 14:54
Nahoru Odpovědět
6.12.2017 14:53
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Miroslav Tomašovič:6.12.2017 19:45

Skúsil som a nepomohlo :-S

Editováno 6.12.2017 19:46
 
Nahoru Odpovědět
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 ;-)

 
Nahoru Odpovědět
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.

Editováno 9.12.2017 15:32
 
Nahoru Odpovědět
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)

Nahoru Odpovědět
9.12.2017 16:13
Neaktivní uživatelský účet
Avatar
Odpovídá 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.

 
Nahoru Odpovědět
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.

Nahoru Odpovědět
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?

 
Nahoru Odpovědět
10.12.2017 18:58
Avatar
Neaktivní uživatel:10.12.2017 20:25

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

Nahoru Odpovědět
10.12.2017 20:25
Neaktivní uživatelský účet
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 18 zpráv z 18.