.htaccess a cool URL – Webové servery (Apache, IIS...), .htaccess – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

.htaccess a cool URL – Webové servery (Apache, IIS...), .htaccess – Fórum – Programujte.com.htaccess a cool URL – Webové servery (Apache, IIS...), .htaccess – Fórum – Programujte.com

 

bugy0
Návštěvník
6. 3. 2007   #1
-
0
-

Ahoj, potřeboval bych kód do .htaccess, který by převedl cool URL na proměnné GET (tedy alespoň myslím, že se to převadí na GET).
Konkrétně bych potřeboval asi toto:

url: www.domena.cz/prvni-polozka/druha-polozka/treti-po...


a .htaccess by z toho udělal ekvivalent tohoto
www.domena.cz/index.php?prvni_promenna=prvni-polozka&druha_promenna=druha-polozka&treti_promenna=treti-po...


Pokud máte potřebný kód do .htaccess, který umí toto udělat, tak mi ho prosím napište.
Vím, že se to dá najit na netu (třeba v dokumentaci APACHE), ale teď nemám zrovna čas a potřebuji to rozchodit celkem rychle, takže by mi to celkem pomohlo.

díky

Nahlásit jako SPAM
IP: ...–
co takhle vyletět si na Měsíc ... mmm ... vomrknout jestli tam není náhodou vedle moře klidu taky moře něčeho rozumnějšího
6. 3. 2007   #2
-
0
-

A da se to nasjit i v serialu o HTAccess na tomto webu. Podivej se na to, jestli je opravdu tak tezke to pochopit ;)

Nahlásit jako SPAM
IP: ...–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
Zdeněk Večeřa
~ Korektor
0
Grafoman
Nahlásit jako SPAM
IP: ...–
www.devtea.cz | zdenekvecera.cz | @ZdenekVecera
Redaktor Programujte.com a Živě.cz
bugy0
Návštěvník
6. 3. 2007   #5
-
0
-

díky za poslané linky, už jsem to rozchodil.

Nahlásit jako SPAM
IP: ...–
co takhle vyletět si na Měsíc ... mmm ... vomrknout jestli tam není náhodou vedle moře klidu taky moře něčeho rozumnějšího
bugy0
Návštěvník
17. 3. 2007   #6
-
0
-

Nazdar, mám problém číslo 2

Potřebuji, abych mohl převést více než jednu proměnnou. Doposud jsem měl jen jednu a bylo to ok. V .htaccess to vypadá takto:

RewriteEngine on

RewriteRule ^([a-zA-Z0-9\\-]*)$ /index\.php?menu=$1 [L,QSA,NC]


Jak mám upravit RewriteRule pro více proměnných. Na netu je hodně příkladů jen s jednou proměnnou a když jsem našel nějaký s dvěmi a více, tak mi nefungovaly, např:

RewriteEngine on

RewriteRule ^([a-zA-Z0-9\\-]+)/([a-zA-Z0-9\\-]+)$ /index\.php?menu=$1&n=$2 [L,QSA,NC]

Nevíte co s tím? díky

Nahlásit jako SPAM
IP: ...–
co takhle vyletět si na Měsíc ... mmm ... vomrknout jestli tam není náhodou vedle moře klidu taky moře něčeho rozumnějšího
kybrex
~ Anonymní uživatel
6 příspěvků
17. 3. 2007   #7
-
0
-

Nedávno jsem optimalizoval web pro SEO vyhledávače a součástí toho jsou i seo-friendly url. :-) Já se na články odkazoval stylem www.centauris.org/web/index.php?page=article&article_id=#(nějaké číslo)

Teď používám .htaccess takto.

RewriteEngine On
RewriteRule ^web/clanky/([0-9]+)-([a-z0-9-]+)$ %{DocumentRoot}/web/index.php?page=article&article_id=$1 [L]

Mrkni, jestli odpovídají regulární výrazy a taky zkus použít DocumentRoot jako to tu mám já ;) a bacha na umístění .htaccess. Já ho třeba mám v rootu hostingu, ale DocumentRoot je nastavenej na root hostingu/web.

Nahlásit jako SPAM
IP: ...–
bugy0
Návštěvník
17. 3. 2007   #8
-
0
-

To kybrex: Díky za odpověď, ale můj problém to neřeší. Mě to pro jednu proměnnou funguje a potřebuji aby to šlo i pro více proměnných, no a ten tvůj příklad je také jen s jednou proměnnou.

mě to teď funguje zhruba takto: http://www.blabla.cz/clanky?id=5 a potřebuji, aby mi šlo toto: http://www.blabla.cz/clanky/5

Nahlásit jako SPAM
IP: ...–
co takhle vyletět si na Měsíc ... mmm ... vomrknout jestli tam není náhodou vedle moře klidu taky moře něčeho rozumnějšího
ahojakkk
~ Anonymní uživatel
3 příspěvky
20. 3. 2007   #9
-
0
-

a podařilo se ti to vyřešit? ;)

Nahlásit jako SPAM
IP: ...–
bugy0
Návštěvník
21. 3. 2007   #10
-
0
-

To ahojakkk: to aby tak chodilo více proměnných NE

Nahlásit jako SPAM
IP: ...–
co takhle vyletět si na Měsíc ... mmm ... vomrknout jestli tam není náhodou vedle moře klidu taky moře něčeho rozumnějšího
olgo0
Věrný člen
21. 3. 2007   #11
-
0
-

To bugy: mislim ze ich musi byt urcity preny pocet.

Nahlásit jako SPAM
IP: ...–
"Boze, dopraj mi, prosim ta, petdesiat rokov prace a zabavy, a potom nahlu smrt v spanku." J. Grisham
bugy0
Návštěvník
21. 3. 2007   #12
-
0
-

To olgo: jo jasně, mě nejde o to abych měl univerzální předpis pro nekonečno proměnných, v praxi nejspíš budou stačit 3-4 proměný. V tom rewriterule se na ně odkazuješ pomocí $1, $2, $3 ... , ale to mi nefunuje.

Nahlásit jako SPAM
IP: ...–
co takhle vyletět si na Měsíc ... mmm ... vomrknout jestli tam není náhodou vedle moře klidu taky moře něčeho rozumnějšího
ahojakkk
~ Anonymní uživatel
3 příspěvky
21. 3. 2007   #13
-
0
-

no mě jde o to, že nemám jistý, že tam bude přesně x proměnných. Tak je otázka jestli tohleto jde vyřešit :( ale podle mě by mělo

Nahlásit jako SPAM
IP: ...–
olgo0
Věrný člen
21. 3. 2007   #14
-
0
-

To ahojakkk: ja myslem ze nie (a aj keby ano budes obmedzeny maximalnym poctom spetnych referencii ale to uz je trochu nadnesene :D)

Nahlásit jako SPAM
IP: ...–
"Boze, dopraj mi, prosim ta, petdesiat rokov prace a zabavy, a potom nahlu smrt v spanku." J. Grisham
ahojakkk
~ Anonymní uživatel
3 příspěvky
21. 3. 2007   #15
-
0
-

no a jak mám tedy vyřešit to, když potřebuju, aby se mi po zadaní /neco zobrazila stránka s informacemi a po zadání neco/neco2 zobrazil produkt s názvem neco2? :)

Nahlásit jako SPAM
IP: ...–
kybrex
~ Anonymní uživatel
6 příspěvků
25. 3. 2007   #16
-
0
-

To ahojakkk: Nevím, jak to tam přesně máš. Abych řek pravdu, tak jsem z toho nebyl moudrej, když jsem to do htaccess psal, ale jestli jsem podle posledního krátkého příspěvku apoň trochu pochopil co chceš...
Nevím, co myslíš stránkou s informacemi :-P ale

www.domena.cz/([0-9a-z-]+) by měla odpovídat /neco (jen maly pismena a cisla) a to si přesměrujes takhle www.domena.cz/informace.php?adresa=$1

a www.domena.cz/([0-9a-z-]+)/([0-9a-z-]+) odpovídá /neco/neco2 a přesměruješ na www.domena.cz/produkt.php?adresa=$2

a tak dál - ty proměnný tam určo musí bejt dostupný.

Nahlásit jako SPAM
IP: ...–
26. 3. 2007   #17
-
0
-

jo jasný, jsem blbec :) když to jde jednoduše, proč to neudělat složitě že :D

Nahlásit jako SPAM
IP: ...–
bugy0
Návštěvník
26. 3. 2007   #18
-
0
-

To kybrex: hmmm, to je celkem blbý, že všechny ty proměnný musí být dostupný (asi proto mi to nefungovalo), lze nějak oštřit, aby nemusely být všechny dostupný (třeba tím, že se napíše vice REWRITERULE za sebou. Já bych potřeboval aby bylo možné toto:

- http://www.domena.cz/eng                  - tohle je třeba volby jazyka - prostě budu na hlavní stránce, která bude v angličtině

- http://www.domena.cz/cze/galerie - tady jsem v sekci galerie v češtině
- http://www.domena.cz/cze/galerie/foto-1 - zobrazí se v galerii konkrétní fotografie


Tak jak na to?

Nahlásit jako SPAM
IP: ...–
co takhle vyletět si na Měsíc ... mmm ... vomrknout jestli tam není náhodou vedle moře klidu taky moře něčeho rozumnějšího
27. 3. 2007   #19
-
0
-

no asi

(eng nebo cze)


cze([0-9a-z-]+)
eng([0-9a-z-]+)

cze([0-9a-z-]+)/([0-9a-z-]+)
eng([0-9a-z-]+)/([0-9a-z-]+)


upozorňuju že to není funkční, jen teorie :)

Nahlásit jako SPAM
IP: ...–
Jasper0
Věrný člen
27. 3. 2007   #20
-
0
-

RewriteEngine On


RewriteCond %{HTTP_HOST} ^web\.cz$ [NC]
RewriteRule ^(.*)$ http://www.web.cz/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+) - [PT,L]


RewriteCond %{REQUEST_URI} !\.[[:alnum:]]+$
RewriteRule ^(.+[^/])$ /$1/ [R=301]
RewriteRule ^([^(/\.)]+)/([^(/\.)]+)/([^(/\.)]+)/([^(/\.)]+)/?$ %{DOCUMENT_ROOT}/index.php?p1=$1&p2=$2&p3=$3&p4=$4 [QSA,L]
RewriteRule ^([^(/\.)]+)/([^(/\.)]+)/([^(/\.)]+)/?$ %{DOCUMENT_ROOT}/index.php?p1=$1&p2=$2&p3=$3 [QSA,L]
RewriteRule ^([^(/\.)]+)/([^(/\.)]+)/?$ %{DOCUMENT_ROOT}/index.php?p1=$1&p2=$2 [QSA,L]
RewriteRule ^([^(/\.)]+)/?$ %{DOCUMENT_ROOT}/index.php?p1=$1 [QSA,L]


Toto mi funguje, automaticky to taky doplnuje www a lomítko nakonec
Pak už si to jen musíš ošetřit v php třeba když $p2 není nastaven, tak máme jen první "uroveň" atd...

Nahlásit jako SPAM
IP: ...–
bugy0
Návštěvník
28. 3. 2007   #21
-
0
-

To Jasper: Díky, to bude asi ono, vyzkouším to.

Nahlásit jako SPAM
IP: ...–
co takhle vyletět si na Měsíc ... mmm ... vomrknout jestli tam není náhodou vedle moře klidu taky moře něčeho rozumnějšího
28. 3. 2007   #22
-
0
-

vypadá to zajímavě, taky na to kouknu

bugy: napiš jak jsi uspěl :)

Nahlásit jako SPAM
IP: ...–
Jakub Jurových0
Stálý člen
29. 3. 2007   #23
-
0
-

Zdravím.
V .htaccess mám

RewriteRule ^([^(/\.)]+)/([^(/\.)]+)/?$ index.php?menu=$1&go=$2 [QSA,L]


Ak teda dám url
http://localhost/trieda/info/novinky
ukáže mi to len čistý index bez obrázkov a css stylov, na ktoré odkazujem. Ako by sa to dalo vyriešiť?

Nahlásit jako SPAM
IP: ...–
Kto sa smeje naposledy, ten má dlhé vedenie.
29. 3. 2007   #24
-
0
-

no a když napíšeš rovnou ten index tak to jde? ;)

Nahlásit jako SPAM
IP: ...–
Jakub Jurových0
Stálý člen
2. 4. 2007   #25
-
0
-

To ahojakkk: Ano.

Nahlásit jako SPAM
IP: ...–
Kto sa smeje naposledy, ten má dlhé vedenie.
Jakub Jurových0
Stálý člen
5. 4. 2007   #26
-
0
-

Tak plánuje mi tu niekto odpovedať? Nechce sa mi totiž prepisovať celý zdroják.

Nahlásit jako SPAM
IP: ...–
Kto sa smeje naposledy, ten má dlhé vedenie.
Martin0
Návštěvník
5. 4. 2007   #27
-
0
-

zkus do toho souboru cestu k obrazkum a css stylum dat absolutne od korenoveho adresare..
napr. pokud mas "style.css" ulozeny ve slozce "http://localhost/css/" tak nepsat

<link rel="stylesheet" href="css/style.css" type="text/css">

ale
<link rel="stylesheet" href="/css/style.css" type="text/css">

ono totiz po zadani http://localhost/trieda/info/novinky by se ten styl hledal v http://localhost/trieda/info/novinky/css/style.css. To same plati pro obrazky...

Nahlásit jako SPAM
IP: ...–
Jakub Jurových0
Stálý člen
5. 4. 2007   #28
-
0
-

Spravil som to takto:

<link rel="stylesheet" href="/css/style.css" type="text/css">
- nešli mi styly ani v index.php

<link rel="stylesheet" href="./css/style.css" type="text/css">
- to čo predtým

Nahlásit jako SPAM
IP: ...–
Kto sa smeje naposledy, ten má dlhé vedenie.
Martin0
Návštěvník
5. 4. 2007   #29
-
0
-

tak pokud nepomuze ani absolutni cesta k souboru, tak nevim... :-(

Nahlásit jako SPAM
IP: ...–
Jakub Jurových0
Stálý člen
5. 4. 2007   #30
-
0
-

A neviete, prečo mi vlastne vôbec nejde

<link rel="stylesheet" href="/css/style.css" type="text/css">
ale iba
<link rel="stylesheet" href="css/style.css" type="text/css">
aj keď som len v index.php???

Nahlásit jako SPAM
IP: ...–
Kto sa smeje naposledy, ten má dlhé vedenie.
Martin0
Návštěvník
5. 4. 2007   #31
-
0
-

tak jediny (pro me) mozny vysvetleni je, ze se ty dve umisteni lisi..

Nahlásit jako SPAM
IP: ...–
Jakub Jurových0
Stálý člen
5. 4. 2007   #32
-
0
-

nelisia...

Nahlásit jako SPAM
IP: ...–
Kto sa smeje naposledy, ten má dlhé vedenie.
Ondrej Juríček
~ Moderátor
0
Stálý člen
5. 4. 2007   #33
-
0
-

priklad: mas web http://www.domena.sk. Ak do hlavneho adresara vlozis index.php a z neho chces zavolat relativnu cestu, tak predtým dojde k uprave ciest a to:
http://www.domena.sk -> http://www.domena.sk/
odstrania sa niektore casti z ciest ako je na napriklad "./", alebo "nieco/.." atd. (ma to presny postup, co sa najprv odstranuje)
a preto ti adresy nefunguju, lebo:
keď zadas "/css/style.css", tak ti vznikne - http://www.domena.sk//css/style.css
keď zadas "css/style.css", alebo "./css/style.css", tak to ti bude fungovat, pretoze je to to iste!

EDIT: trochu som sa sekol a nieje to tak, ako som tu pisal. Ono ked zadas cestu "/css/style.css", tak sa ti vytvori absolutna cesta "http://css/style.css" - co samozrejme je blbost a preto ti to nejde! (teda aspon myslim, ze to tak je)

EDIT 2: ak sa ti chce trochu postudovat, preco to tak je - http://www.ietf.org/rfc/rfc1808.txt

Nahlásit jako SPAM
IP: ...–
insider0
Věrný člen
9. 4. 2007   #34
-
0
-

To Jakub: tohle sem taky resil a kupodivu je reseni vcelku jednoduche, aniz bys musel prepisovat vsechny obrazky v indexu :)



<head>
<base href="http://tvoje-stranka.cz" />

<link .. />
</head>

tim nastavis jakoby vsem obrazkum, stylum a skriptum(pouze html) zakladni cestu ...

To bugy:
nevim jestli uz ti to funguje, moc sem neprocital, pouzivam drobinko jiny zpusob + otazniky v regularnich vyrazech = nepoviny parametr:


RewriteEngine on
RewriteBase /

#produkty
RewriteCond %{REQUEST_URI} ^(.*)/produkty/((([^/]+)/)?(([^/]+)/)?)?$
RewriteRule .* produkty.php?kat=%4&vyr=%6 [QSA]

mod_rewrite neovladam zrovna dobre, ale kdyz neco funguje, tak do toho nerypat :D takze sem spokojen i kdyz je to treba blbe, hlavni pro me je, ze to funguje ...

Nahlásit jako SPAM
IP: ...–
I don't want to see you go,[br] The sky is over[br] Even though we can't afford[br] The sky is over,[br] The sky is over us.[br][br] CIVILIZATION IS OVER
Jakub Jurových0
Stálý člen
9. 4. 2007   #35
-
0
-

no super, ked som uz vsetko prepisal :-(

Nahlásit jako SPAM
IP: ...–
Kto sa smeje naposledy, ten má dlhé vedenie.
bugy0
Návštěvník
9. 4. 2007   #36
-
0
-

To Jasper: tak jsem vyzkoušel to tvoje řešení. FUNGUJE TO PERFEKTNĚ - PŘESNĚ TOHLE JSEM POTŘEBOVAL. Díky moc

Nahlásit jako SPAM
IP: ...–
co takhle vyletět si na Měsíc ... mmm ... vomrknout jestli tam není náhodou vedle moře klidu taky moře něčeho rozumnějšího
15. 4. 2007   #37
-
0
-

jojo, díky! vrazím to tam ;)

Nahlásit jako SPAM
IP: ...–
30. 6. 2007   #38
-
0
-

tak já ten problém s CSS vyřešil takhle:

$root_folder = 'http://' . $_SERVER['HTTP_HOST'] . '/debugging/new/';

Nahlásit jako SPAM
IP: ...–
polonium0
Návštěvník
4. 7. 2010   #39
-
0
-

Ahojte,

takže jestli jsem spravne pochopil RewriteCond tak funguje následovně:

RewriteCond (Co ma odpovidat vyrazu) (Vyraz, kterym kontrolujeme spravnost)

Tak proc mi nefunguje toto:

RewriteEngine On

RewriteCond %{REQUEST_URI} ^/hledat?s_typ=([A-Za-z0-9-_\+]*)&s_nemovitost=([A-Za-z0-9-_\+]*)&s_cenaod=([A-Za-z0-9-_\+]*)&s_cenado=([A-Za-z0-9-_\+]*)&s_obsahuje=([A-Za-z0-9-_\+]*).*$
RewriteRule (.*) /hledat/%1/%2/%3/%4/%5 [L]


Když odešlu formulář tak URI vypadá takto:
http://realhk.cz/hledat?s_typ=prodej&s_nemovitost=byt&s_cenaod=&s_cenado=&s_obsahuje=&search=Hledat

A já potřebuju toto:
http://realhk.cz/hledat/s_typ/s_nemovitost/s_cenaod/s_cenado/s_obsahuje

Kde dělám chybu ??

Díky za odpověď
polonium

Nahlásit jako SPAM
IP: 85.132.159.–
polonium0
Návštěvník
4. 7. 2010   #40
-
0
-

Dobrá tedy jinak.

RedirectMatch ^/hledat\?+s_typ=(.*)$ /hledat/$1

tento řádek v htaccess by měl přesměrovat url: http://example.com/hledat?s_typ=cokoliv
a to na tuto url: http://example.com/hledat/cokoliv

Ovšem není tomu tak, ale protože na internetu jsem nanešel dostatek informací obracím se na Vás. Proč to nefunguje jak má??

Díky za odpověď
polonium

Nahlásit jako SPAM
IP: 88.146.176.–
polonium0
Návštěvník
4. 7. 2010   #41
-
0
-

Toto by měla být alternativa prvního ale stále nefunguje.

RewriteCond %{REQUEST_URI} ^/hledat\?+s_typ=(.*)

RewriteRule (.*) /hledat/%1 [R=301]

Nahlásit jako SPAM
IP: 88.146.176.–
Stejky0
Newbie
10. 1. 2011   #42
-
0
-

Mám podobný problém a sice, že při podstrčení adres se mi nezavolá na stránce css styl (jak už tu měl problém jakub myslím). Zkoušel jsem už všechno možné, úplně se do toho zamotal. Mám to řešeno takhle:

V hlavičce mám include php skriptu, který mi automaticky doplňuje baselink

<?php

function baselink() {
$host = $_SERVER["HTTP_HOST"];
$script = $_SERVER["SCRIPT_NAME"];
$dily = explode("/",$script);
array_pop($dily);
$dilyjoin = join("/",$dily);
$baselink = $host.$dilyjoin."/";
return $baselink;
}
?>
<base href="http://<?php echo baselink();?>" />


CSS volám takto:
<link rel="stylesheet" href="css/style.css" type="text/css" media="screen" />


Tlačítka:
<li><a class="uvod" href="#"></a></li>

<li><a class="realizace" href="cz/realizace"></a></li>
<li><a class="sluzby" href="cz/sluzby"></a></li>
<li><a class="cenik" href="cz/cenik"></a></li>
<li><a class="kontakt" href="cz/kontakt"></a></li>


Stránky dynamicky měním takto:
    <?php


$odkaz=$_GET["lang"]."_".$_GET["www"].".php";
if (!IS_FILE($odkaz))
{
include "cz_uvod.php";
}
else
{
include $odkaz;
}

?>


Soubor .htaccess vypadá takto:
Options +FollowSymlinks

RewriteEngine on
RewriteRule ^(.*)/(.*) index.php?lang=$1&www=2$


Ví někdo co dělám špatně? Děkuji za odpověď

Nahlásit jako SPAM
IP: 94.113.193.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 5 hostů

Podobná vlákna

Zkracovač url / htaccess — založil xmat

Htaccess všetky varianty url — založil Anonym548775335

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý