IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Jak napsat odkaz, abych po rozkliknutí viděl stranka.com/en, nikoliv stranka.com/en.html

Aktivity
Avatar
Døminik
Člen
Avatar
Døminik:14.7.2020 11:47

Zdravím, na stránce mám odkaz v podobě obrázku. Ten má přeměrovat na druhý soubor v jiném jazyce, angličtinu a němčinu. Tento kód je v "úvodním souboru" index.html.
Jakmile rozkliknu obrázek imgen.png, dostanu se na požadovaný soubor en.html, v url ale vidím web.com/en.html.

Jak to mám zapsat, aby se po otevření nového souboru v rul zobrazilo web.com/en nebo web.com/de, nikoliv web.com/en.html ?
Děkuji za pomoc

<a href = "en.html" target="_blank"><img src="imgen.png" style="float:right"></a>
<a href = "de.html" target="_blank"><img src="imgde.png" style="float:right"> </a>
 
Odpovědět
14.7.2020 11:47
Avatar
Jiří Havelka:14.7.2020 13:12

Tavá otázka nemá úpně triviální odpověď. Na úrovni html je to docela jednoduché stačí přpsat

href="en.html"

na

href="en"

ale tím tvá práce neskončí. Pak budeš muset nastavit webový server (nginx, apache, ...) tak, aby ro url web.com/en vracel soubor en.html. To není není standartní chování a poteřba zěnit konfiguraci serveru. Další možností by bylo na serveru použít nějaký scriptovací jazyk (php, ruby, python ...). Pokud chceš provozovat stránky jenom za pomoci čistého html a css na nějakém sdíleném hostingu obávám se, že se toho .html nezbavíš.

 
Nahoru Odpovědět
14.7.2020 13:12
Avatar
Jan Poláček
Tvůrce
Avatar
Odpovídá na Døminik
Jan Poláček:14.7.2020 13:30

Ahoj,

já tam vidím 2 věci, pokud to budeš dělat čistě v html, asi by šel nastavit .htaccess aby vracel, jak požaduješ, nebo udělat složku en, kde bude index.html, pokud tedy potom někdo klikne na cestu /en apache otevře automaticky index.html

Druhá cesta je jít přes PHP, v .htaccess se nastaví, že vše bude obsluhovat index.php a pak už je jen na tomto souboru jak zpracuje jakoukoliv cestu a co s ní udělá, toto řešení bych pro normální web doporučil.

Nahoru Odpovědět
14.7.2020 13:30
Instrukce na adrese 0x77104f29 odkazovala na adresu paměti 0x00000014. S pamětí nelze provést operaci: written.
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:14.7.2020 18:33
web.com/en.html.
index.html
---
web.com/en = web.com/en/index.html, pokud mas nastaveno php, pak
web.com/en = web.com/en/index.php
---
... pokud to chces presmerovat na en.html
web.com/en/index.html
<meta http-equiv="refresh" content="5;url=http://web.com/en.html">

A samozrejme presmerovani je lepsi delat pres soubor .htaccess nebo v nastaveni serveru.
google = htaccess language relocate
https://forums.mobirise.com/…ith-htaccess

RewriteEngine On

RewriteCond %{HTTP:Accept-Language} ^en [NC]
RewriteRule ^$ http://la-combe.com/en/ [L,R=301]

RewriteCond %{HTTP:Accept-Language} ^de [NC]
RewriteRule ^$ http://la-combe.com/de/ [L,R=301]

RewriteCond %{HTTP:Accept-Language} ^nl [NC]
RewriteRule ^$ http://la-combe.com/nl/ [L,R=301]

RewriteCond %{HTTP:Accept-Language} ^fr [NC]
RewriteRule ^$ http://la-combe.com/fr/ [L,R=301]

RewriteCond %{HTTP:Accept-Language} ^es [NC]
RewriteRule ^$ http://la-combe.com/es/ [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(en|de|nl|fr|es)/?$ index.php?lang=$1 [QSA,NC,L]

# Check domain (1), browser language (2) and redirect to subdirectory (3)
RewriteCond %{HTTP_HOST} .*la-combe.com [NC]
RewriteCond %{HTTP:Accept-Language} ^nl [NC]
RewriteRule ^$ http://%{HTTP_HOST}/ [L,R=301]


RewriteCond %{HTTP_HOST} .*la-combe.com [NC]
RewriteCond %{HTTP:Accept-Language} ^fr [NC]
RewriteRule ^$ http://%{HTTP_HOST}/fr/ [L,R=301]

# Fallback for any other language to english
RewriteCond %{HTTP_HOST} .*la-combe.com [NC]
RewriteRule ^$ http://%{HTTP_HOST}/en/ [L,R=301]

RewriteEngine on
RewriteCond %{HTTP:Accept-Language} (nl) [NC]
RewriteRule ^/?$ /mbr-lang/nl/ [R=301,L]
RewriteCond %{HTTP:Accept-Language} (bg) [NC]
RewriteRule ^/?$ /mbr-lang/bg/ [R=301,L]
RewriteCond %{HTTP:Accept-Language} ((aa|ab|af|am|ar|as|ay|az|ba|be|bh|bi|bn|bo|br|ca|co|cs|cy|da|de|dz|el|en|eo|es|et|eu|fa|fi|fj|fo|fr|fy|ga|gd|gl|gn|gu|ha|hi|hr|hu|hy|ia|ie|ik|in|is|it|iw|ja|ji|jw|ka|kk|kl|km|kn|ko|ks|ku|ky|la|ln|lo|lt|lv|mg|mi|mk|ml|mn|mo|mr|ms|mt|my|na|ne|no|oc|om|or|pa|pl|ps|pt|qu|rm|rn|ro|ru|rw|sa|sd|sg|sh|si|sk|sl|sm|sn|so|sq|sr|ss|st|su|sv|sw|ta|te|tg|th|ti|tk|tl|tn|to|tr|ts|tt|tw|uk|ur|uz|vi|vo|wo|xh|yo|zh|zu)) [NC]
RewriteRule ^/?$ /mbr-lang/en/ [R=301,L]

javascript jquery kod na presmerovani

<script>
$( document ).ready(function(){
var userLang = navigator.language || navigator.userLanguage;
if (userLang == "nl") {
break;
}
else if(userLang == ''fr"){
window.location.href = "www.la-combe.com/fr"
}

else {
window.location.href = "www.la-combe.com/en"
}
});
</script>
Editováno 14.7.2020 18:34
 
Nahoru Odpovědět
14.7.2020 18:33
Avatar
Neaktivní uživatel:15.7.2020 12:48

Lidi co řešíte? :D

Pokud jde o web který má jen HTML stránky, tak lze přes .htaccess mod rewrite to .html úplně jednoduše globálně skrýt.

Viz např.: https://www.plothost.com/…th-htaccess/

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html [NC,L]
Editováno 15.7.2020 12:49
Nahoru Odpovědět
15.7.2020 12:48
Neaktivní uživatelský účet
Avatar
Døminik
Člen
Avatar
Odpovídá na Neaktivní uživatel
Døminik:15.7.2020 17:19

Mysíš takto? Soubory jsou en.html a de.html
Tento kód mi zatím nefunguje

RewriteEngine on
RewriteCond %{request_en.html} !-d
RewriteCond %{request_en.html}\.html -f
RewriteRule ^(.*)$ $1.html [NC,L]
 
Nahoru Odpovědět
15.7.2020 17:19
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:16.7.2020 8:48

Asi sis o htaccess nic neprecetl nebo neumis kopirovat kod, ani jsi nepochopil, co to dela. nebo jsi proste liny pouzit google nebo si neco o tom precist, coz je pomerne smutne u nekoho, kdo neco potrebuje a neni ochotny pro to neco obetovat.

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
# rewrite condition = prepis podle podminek
# prepisuje se url
# % = znamena vsechny znaky v jakemkoliv mnozstvi
# {REQUEST_FILENAME} = znamena jmeno souboru, request je odeslany pozadavek, url adresa; REQUEST_FILENAME je promena, kterou ziskas parsovanim url https://httpd.apache.org/docs/trunk/mod/mod_rewrite.html#rewritecond
# -d    Is directory.
# -f    Is regular file.
# ! = not

# %{REQUEST_FILENAME}
# http://..../jmeno_souboru.html ->jmeno_souboru.html
# %{REQUEST_FILENAME}\.html
# http://..../jmeno_souboru.html ->jmeno_souboru

Coz je presne to, co asi potrebujes, vybrat z adresy pomoci regularniho vyrazu jmeno souboru
RewriteCond %{REQUEST_FILENAME}\.html -f
# %{REQUEST_FILENAME} !-d
# http://..../en -> en
# http://..../en/ -> ignoruje, protoze en/ je directory
# %{REQUEST_FILENAME}\.html -f
# http://..../en.html -> en
# Cili, oba ty vyrazy vyberou text z adresy na konci a dalsi prikaz s tim neco udela.

RewriteRule ^(.*)$ $1.html [NC,L]
A pro vybrany vyraz prepis adresu
^ zacatek stringu
$ konec stringu
(.*) vsechny znaky
Nahrad je stringem $1.html
$1 je vybrany vyraz z adresy prikazem RewriteCond, ktery je "en" (1 = prvni, muzes mit vic vyrazu, ktere te zajimaji)
.html je string ".html",
takze to nahradi url za "en.html"

Cele to tedy dela jen to, ze najdi v adrese nejaky text, podle podminek a uprav adresu na jinou, treba s pomoci toho nalezeneho textu.

https://www.jakpsatweb.cz/…rewrite.html
https://www.jakpsatweb.cz/…riklady.html
https://www.jakpsatweb.cz/…erovani.html
https://httpd.apache.org/…mapping.html - oficialni dokumentace

Editováno 16.7.2020 8:51
 
Nahoru Odpovědět
16.7.2020 8:48
Avatar
Odpovídá na Døminik
Neaktivní uživatel:16.7.2020 10:04

TL;DR: Dostaneš požadavek např. https://domena.cz/abcd

RewriteCond %{REQUEST_FILENAME} !-d

Je podmínka, která zjistí, že požadovaná adresa (v tomto případě abcd) není složka.


RewriteCond %{REQUEST_FILENAME}\.html -f

Je podmínka, která zjistí, že když k požadované adrese (v tomto případě abcd) přidáš .html => že najdeš existující soubor. Tedy pokud je požadavek https://domena.cz/abcd, zjistí, jestli existuje https://domena.cz/abcd.html.


RewriteRule ^(.*)$ $1.html [NC,L]

A nakonec, toto je pravidlo (výše uvedené byly pouze podmínky), které zajistí, že když zadáš /abcd, dostaneš /abcd.html.


Veškeré výše uvedené řádky jsou plně automatické, pracuje se globálně s HTTP požadavkem, nikoliv s konkrétními názvy souborů (tedy žádné přepisování na %{request_en.html}!). Pokud to jen zkopíruješ a vložíš a nesáhneš na to, bude to fungovat.

Editováno 16.7.2020 10:06
Nahoru Odpovědět
16.7.2020 10:04
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 8 zpráv z 8.