Kupte si prémiovou propagaci a toto místo bude vaše.
Zobrazují se odpovědi 1 až 11 z 11

Úprava URL přes.htaccess

  1. Ahoj,
    mám url http://domena.cz/sluzby.php?language=cz nebo http://domena.cz/kariera.php?language=cz a potřeboval bych z toho udělat http://domena.cz/sluzby/ nebo http://domena.cz/kariera/ .

    Byl by někdo tak hodný a poradil mi jak má vypadat zápis v .htaccess souboru?

    Už jsem prohledal všechno možný na netu, ale nemůžu to složit dohromady :-(

    Moc diky, O.

  2. Co se právě děje na Webtrhu?
    AMERYS poptává: Hľadáme: Bootstrap kodera
    Eliaš - IT Solutions poptává: Hľadám laravel - PHP developera
    Daniel Holý poptává: Programátor html5 - responsibilní frontend
  3. Kód:
    RewriteEngine On
    RewriteBase /    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-s
    RewriteRule ^([^/]+)/?$ $1.php?language=cz [QSA,NC,L]
    pak je jen otázka, jestli chceš v url zachovat jazyk nebo nikdo, pak by mohlo být něco jako http://domena.cz/en/kariera/, to ale vypadá hodně divně, takze spise doporučím řešit překlady jinak.

  4. Citace Původně odeslal TomášX Zobrazit příspěvek
    Kód:
    RewriteEngine On
    RewriteBase /    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-s
    RewriteRule ^([^/]+)/?$ $1.php?language=cz [QSA,NC,L]
    pak je jen otázka, jestli chceš v url zachovat jazyk nebo nikdo, pak by mohlo být něco jako http://domena.cz/en/kariera/, to ale vypadá hodně divně, takze spise doporučím řešit překlady jinak.
    Diky za reseni, ale vlozil jsem to do souboru .htaccess, ale pri nahrani na FTP se s URL nic nedeje. Nemuze byt chyba v tom zapisu?
    Ja mam pro kazdou mutaci vlastni stranku, tj. CZ - kariera.php, EN - career.php.

    Diky za pomoc

  5. otázka co se má dít :). Ten můj kód ti zajistí, že adresa http://domena.cz/sluzby/ ti funguje a zobrazí správnou stránku. Pokud chceš zároveň dělat i přesměrování těch .php na nové, musíš k tomu dodat nový předpis.

    Píšu z hlavy, ale teď by se mělo:
    - stránky sluzby.php?language=cz přesměrovávat (301) na /sluzby (obdobně s kariera)
    - stránky career.php?language=en přesměrovávat (301) na /career (obdobně s service, about atd.)
    - stránky jako /sluzby /kariera interně otevřou php script sluzby.php?language=cz či kariera.php?language=cz, tj. předá se tam správný jazyk
    - stránky jako /career interně otevřou script career.php?language=en
    - je nutné dvakrát vyplnit všechny české a anglické stránky, aby se nemohly pomýchat jazyky a jiné nastavení


    Kód:
    RewriteEngine On
    RewriteBase / 
    
    # cz stranky
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} \.php -f
    RewriteCond %{QUERY_STRING} (^|&)language=cz [NC]
    RewriteRule (sluzby|kariera)\.php$ /$1? [R=301,L]
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-s
    RewriteRule ^(sluzby|kariera)/?$ $1.php?language=cz [QSA,NC,L]
    
    
    # en strany
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} \.php -f
    RewriteCond %{QUERY_STRING} (^|&)language=en [NC]
    RewriteRule (service|career|about)\.php$ /$1? [R=301,L]
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-s
    RewriteRule ^(service|career|about)/?$ $1.php?language=en [QSA,NC,L]

  6. BTW: připojím se s dotazem, dá se nějak pořešit přes .htaccess to, že se mi v error logu objevují 404 na url které nejsou správně zakončené?

    např, správně je domena.tld/zbozi-id-1256.html

    a v error logu je domena.tld/zbozi-id-1256.ht ... atd

    asi to jsou nějaké odkazy někde špatně zalomené z emailů diskusí atd ... dá se to nějak řešit, aby to správně přesměrovalo? Když tam je alespoň to id?

  7. Citace Původně odeslal TomášX Zobrazit příspěvek
    otázka co se má dít :). Ten můj kód ti zajistí, že adresa http://domena.cz/sluzby/ ti funguje a zobrazí správnou stránku. Pokud chceš zároveň dělat i přesměrování těch .php na nové, musíš k tomu dodat nový předpis.

    Píšu z hlavy, ale teď by se mělo:
    - stránky sluzby.php?language=cz přesměrovávat (301) na /sluzby (obdobně s kariera)
    - stránky career.php?language=en přesměrovávat (301) na /career (obdobně s service, about atd.)
    - stránky jako /sluzby /kariera interně otevřou php script sluzby.php?language=cz či kariera.php?language=cz, tj. předá se tam správný jazyk
    - stránky jako /career interně otevřou script career.php?language=en
    - je nutné dvakrát vyplnit všechny české a anglické stránky, aby se nemohly pomýchat jazyky a jiné nastavení


    Kód:
    RewriteEngine On
    RewriteBase / 
    
    # cz stranky
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} \.php -f
    RewriteCond %{QUERY_STRING} (^|&)language=cz [NC]
    RewriteRule (sluzby|kariera)\.php$ /$1? [R=301,L]
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-s
    RewriteRule ^(sluzby|kariera)/?$ $1.php?language=cz [QSA,NC,L]
    
    
    # en strany
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} \.php -f
    RewriteCond %{QUERY_STRING} (^|&)language=en [NC]
    RewriteRule (service|career|about)\.php$ /$1? [R=301,L]
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-s
    RewriteRule ^(service|career|about)/?$ $1.php?language=en [QSA,NC,L]
    Moji myslenku jsi pochopil velice dobre. Vyspecifikovat stranky pro CZ a EN neni problem, je jich tam celkem 5 pro kazdou mutaci. Ale nejede to ani na localhostu, ani na hostingu (chyba 500).

    Nazvy stranek (index, produkty, sluzby, ...) a EN (main, products, services, ....) jsem 2x kontroloval.

    Vysledny skript je, ale je tam jeste nejaka chybka. Mrknul bys na to jeste jednou, prosim?

    Kód:
    RewriteEngine On
    RewriteBase / 
    
    # cz stranky
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} \.php -f
    RewriteCond %{QUERY_STRING} (^|&)language=cz [NC]
    RewriteRule (index|produkty|sluzby|kariera|kontakt)\.php$ /$1? [R=301,L]
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-s
    RewriteRule ^(index|produkty|sluzby|kariera|kontakt)/?$ $1.php?language=cz [QSA,NC,L]
    
    
    # en strany
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} \.php -f
    RewriteCond %{QUERY_STRING} (^|&)language=en [NC]
    RewriteRule (main|products|service|career|contact)\.php$ /$1? [R=301,L]
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-s
    RewriteRule ^(main|products|service|career|contact)/?$ $1.php?language=en [QSA,NC,L]

  8. Citace Původně odeslal puhy.cz Zobrazit příspěvek
    BTW: připojím se s dotazem, dá se nějak pořešit přes .htaccess to, že se mi v error logu objevují 404 na url které nejsou správně zakončené?

    např, správně je domena.tld/zbozi-id-1256.html

    a v error logu je domena.tld/zbozi-id-1256.ht ... atd

    asi to jsou nějaké odkazy někde špatně zalomené z emailů diskusí atd ... dá se to nějak řešit, aby to správně přesměrovalo? Když tam je alespoň to id?
    dá, samozřejmě. S těmito url se sektávám často v případech, kdy vyhledávač se pokouší najít url v textu, tak si vezme postupně všechny varianty a zkouší, která z nich je správná. V takovém případě to ošetření nemá žádný vliv, protože stejně vyhledávač dojde k .html variantě a ta je ok.

    Mohlo by to vypadat nějak takhle:

    Kód:
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-s
    RewriteRule ^(zbozi-id-)([0-9]+)\.(h|ht|htm|htm)?$ $1$2.html [R=301,L]
    Pak to vezme všechny tyhle url a přesměruje na html verzi s 301:
    - http://domena.tld/zbozi-id-1256.
    - http://domena.tld/zbozi-id-1256.h
    - http://domena.tld/zbozi-id-1256.ht
    - http://domena.tld/zbozi-id-1256.htm

  9. Jak na to koukám, nejspíš tam mám chybu v řádku "RewriteCond %{REQUEST_FILENAME} \.php -f", správně by to mohlo vypadat takhle:

    Kód:
    RewriteEngine On
    RewriteBase / 
    
    # cz stranky
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME}/.php -f
    RewriteCond %{QUERY_STRING} (^|&)language=cz [NC]
    RewriteRule (index|produkty|sluzby|kariera|kontakt)\.php$ /$1? [R=301,L]
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-s
    RewriteRule ^(index|produkty|sluzby|kariera|kontakt)/?$ $1.php?language=cz [QSA,NC,L]
    
    
    # en strany
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME}/.php -f
    RewriteCond %{QUERY_STRING} (^|&)language=en [NC]
    RewriteRule (main|products|service|career|contact)\.php$ /$1? [R=301,L]
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-s
    RewriteRule ^(main|products|service|career|contact)/?$ $1.php?language=en [QSA,NC,L]
    Pokud ani to nezabare, tak bych na tom řádku nechal pouze

    Kód:
    RewriteCond %{REQUEST_FILENAME} -f

  10. Citace Původně odeslal TomášX Zobrazit příspěvek
    dá, samozřejmě. S těmito url se sektávám často v případech, kdy vyhledávač se pokouší najít url v textu, tak si vezme postupně všechny varianty a zkouší, která z nich je správná. V takovém případě to ošetření nemá žádný vliv, protože stejně vyhledávač dojde k .html variantě a ta je ok.

    Mohlo by to vypadat nějak takhle:

    Kód:
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-s
    RewriteRule ^(zbozi-id-)([0-9]+)\.(h|ht|htm|htm)?$ $1$2.html [R=301,L]
    Pak to vezme všechny tyhle url a přesměruje na html verzi s 301:
    - http://domena.tld/zbozi-id-1256.
    - http://domena.tld/zbozi-id-1256.h
    - http://domena.tld/zbozi-id-1256.ht
    - http://domena.tld/zbozi-id-1256.htm
    Ok, díky. Teď mě ale napadá, má cenu to řešit? Nepovede to spíš k duplicitám? Ano, procházel jsem ve who is IP a dělá to google ...

  11. Citace Původně odeslal puhy.cz Zobrazit příspěvek
    Ok, díky. Teď mě ale napadá, má cenu to řešit? Nepovede to spíš k duplicitám? Ano, procházel jsem ve who is IP a dělá to google ...
    s přesměrováním 301 to k duplicitám nepovede, ale pokud to má být pouze pro vyřešení návštěv Google vyhledávače, nepřidával bych to, je to zbytečné.

  12. Citace Původně odeslal TomášX Zobrazit příspěvek
    Jak na to koukám, nejspíš tam mám chybu v řádku "RewriteCond %{REQUEST_FILENAME} \.php -f", správně by to mohlo vypadat takhle:

    Kód:
    RewriteEngine On
    RewriteBase / 
    
    # cz stranky
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME}/.php -f
    RewriteCond %{QUERY_STRING} (^|&)language=cz [NC]
    RewriteRule (index|produkty|sluzby|kariera|kontakt)\.php$ /$1? [R=301,L]
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-s
    RewriteRule ^(index|produkty|sluzby|kariera|kontakt)/?$ $1.php?language=cz [QSA,NC,L]
    
    
    # en strany
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME}/.php -f
    RewriteCond %{QUERY_STRING} (^|&)language=en [NC]
    RewriteRule (main|products|service|career|contact)\.php$ /$1? [R=301,L]
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-s
    RewriteRule ^(main|products|service|career|contact)/?$ $1.php?language=en [QSA,NC,L]
    Pokud ani to nezabare, tak bych na tom řádku nechal pouze

    Kód:
    RewriteCond %{REQUEST_FILENAME} -f
    Asi jsem hloupy, ale ted kdyz kliknu napr. kariera, tak mi naskoci domena.cz/kariera , ale zobrazi "Tato stránka nefunguje, web domena.cz vas přesměroval příliš mnohokrát".
    Pokud by to mel byt problem, tak bych odstranil jen ?language="cz|en".
    Diky

Hostujeme u Server powered by TELE3