Autor | Zpráva | ||
---|---|---|---|
Yuhů Profil |
#1 · Zasláno: 29. 1. 2005, 16:23:54 · Upravil/a: Yuhů
Nechápu, jak funguje mod_rewrite, ale věřím, že mi to někdo vysvětlíte. Prosím, nechte si od cesty dohady, chci radu od někoho, kdo můj dotaz pochopí a ví, o čem píše.
Vím, jak funguje mod_alias. Prostě na staré adrese vrátí přesměrování 301 na novou adresu. Pohoda, to je jasné. Teď situace, kterou řeším: dejme tomu, že mám skript index.php a aplikaci napsanou tím způsobem, že URL mají tvar /adresar/index.php?cislo=12345 potřeboval bych, aby se čtenářům i vyhledávačům taková adresa jevila třeba jako /adresar/12345.html Tolik zadání problému. Teď vysvětlím, čemu nerozumím: Umím napsat pravidlo pro mod_alias, který mi adresu /adresar/index.php?cislo=12345 přesměruje na /adresar/12345.html (prostě index?cislo=12345 -> 12345.html) ale k čemu mi to je, když na adrese 12345.html nic nemám? A dotaz: Dá se napsat pravidlo pro mod_rewrite tak, že nebudu muset aplikaci s url ?cislo=45656 přepisovat, tvořit žádné další soubory, ale zároveň uživatel/vyhledávač uvidí adresu 45656.html se stejným obsahem? |
||
Leo Profil |
#2 · Zasláno: 29. 1. 2005, 19:32:08
To funguje naopak / adresu lidsky citelnou prepises na adresu dynamickou, Leo
|
||
Yuhů Profil |
#3 · Zasláno: 29. 1. 2005, 19:40:25
> adresu lidsky citelnou prepises na adresu dynamickou, Leo
a to mi bude dobré k čemu? Vyhledávač pak uvidí dynamickou adresu, takže v ní nepozná klíčová slova. |
||
Leo Profil |
#4 · Zasláno: 29. 1. 2005, 19:44:46
Pokud napises
RewriteEngine On RewriteRule /adresar/(.*)\.html /adresar/index.php?cislo=$1 Tak pro okolni svet bude EXISTOVAT stranka rekneme ahoj.html, prohlizec si ji vyzada, dostane normalne kod, 200 OK a obsah stranky. Ovsem Apache a mod_rewrite ve skutecnosti posila obsah stranky index.php?cislo=ahoj Leo |
||
Leo Profil |
#5 · Zasláno: 29. 1. 2005, 19:45:54
Vyhledavac dynamickou adresu index.php?cislo=12345 vubec neuvidi, protoze do vsech odkazu nacpes 12345.html... Leo
|
||
Leo Profil |
#6 · Zasláno: 29. 1. 2005, 19:55:21
Jinak receno, pomoci mod_rewrite vytvoris pro tvoje stranky, at uz dynamicke nebo staticke, synonymum. Skutecny nazev stranky se nikdy nemusi dostat ven, pokud ho neuvedes v odkazu apod. A vzhledem k tomu, ze vytvareni synonyma pouziva regularni vyrazy a muzes psat podminky s pouzitim serverovych promennych (RewriteCond), je to mocna zbran, az treba k necemu takovemu :-) :
http://jeremy.zawodny.com/blog/archives/000826.html Leo |
||
izsak Profil |
#7 · Zasláno: 29. 1. 2005, 21:10:18
Este mala poznamka:
Pri adrese 12345.html Apache interne pošle požiadavku na súbor index.php?cislo=12345 ale subor znovu presmeruje (internu) poziadavku na 12345.html. Aby sa to nezacyklilo, treba to v index.php osetrit podmienkou, napr. prepisovat adresu na index.php?cislo=12345&rewrited=true. |
||
Leo Profil |
#8 · Zasláno: 29. 1. 2005, 21:13:23
"ale subor znovu presmeruje (internu) poziadavku na 12345.html"
To nechapu, muzete mi to osvetlit? Leo |
||
Časová prodleva: 2 měsíce
|
|||
pmasarik Profil * |
#9 · Zasláno: 25. 3. 2005, 15:20:07
Chapem ako urobim pomocou mod_rewrite z index.php?cislo=12345 ---> 12345.html
To ma pri poziadavke na 12345.html presmeruje na index.php?cislo=12345, potialto to chapem a aj mi to funguje, ale ako zabespecim aby uz v samotnej stranke tiez figurovali tie odkazi ako 12345.html a nie ako index.php?cislo=12345 Toto som doteraz nepochopil, a znenit to v PHP aby mi to tak generovalo mi nedava zmysel, naco by bol potom ten mod_rewrite ked by mi uz samotne PHPcko generovalo akoze tie staticke stranky? |
||
Časová prodleva: 1 rok
|
|||
http://www.areaseo.c om Profil * |
#10 · Zasláno: 31. 5. 2006, 04:05:20
<a href='http://www.yahoo.com'></a>Welcome! http://www.areaseo.com/improvepr/ <a href='http://www.areaseo.com'>improve pagerank default</a>. <a href="http://www.areaseo.com ">PageRank 11</a>: Web Site Analysis, SE marketing, High Rankings. Also [url]http://www.areaseo.com/linksale/[/url] and [link=http://www.areaseo.com]google rank 20[/link] from pagerank .
|
||
http://www.areaseo.c om Profil * |
#11 · Zasláno: 31. 5. 2006, 04:05:27
Welcome!!! http://www.areaseo.com/contacts/ google pr. pagerank 5: Web Site Analysis, SE marketing, High Rankings. Also online pr16 from google pr .
|
||
http://www.areaseo.c om Profil * |
#12 · Zasláno: 31. 5. 2006, 04:05:30
hello! http://www.areaseo.com/contacts/ google pr. Web Site Analysis, SE marketing, High Rankings. From google pr .
|
||
mila Profil |
#13 · Zasláno: 31. 5. 2006, 12:49:44
Klíčové je písmenko R za pravidlem. To ve výsledku vlastně úplně obrací, co se děje.
Pokud tam není, tak jen tiše namapuje požadavek na nějaký soubor. Typicky soubor 123456.html neexistuje, tak řekne, že to má zpracovat index.php. Uživatel nic neví. Je to podobný proces, jako když požadavek na adresář zpracuje index.php Pokud je R na konci, tak pošle hlavičku redirect, ve které je nová lokace. Tu dostane klient, a pošle si nový požadavek. Tzn. v adresním řádku je nová adresa a toto přesměrování může jít klidně na úplně jiný server. Pokud budu vytvářet seo uris už za běhu webu, vytvořím dvě opačná pravidla - index.php?id=123456 přesměruji s R na 13246.html. Pošlu u toho hlavičku "moved permanently", aby všichni věděli, že mají používat adresu s html. A pak tam dám druhé pravidlo, které to udělá naopak, ale už bez R. Mimochodem má oblíbené pravidlo je
Condition říká, že se nemá přepisovat, pokud je požadavek na platný soubor. V opačném případě zpracuje požadavek index.php, a v $_SERVER['PATH_INFO'] si lze pak zjistit, jak vypadala požadovaná cesta. Vytvořím tak imaginární adresářovaou strukturu, vše ale jde přes jeden skript a jedno pravidlo. Pěkné na tom je, že to funguje i bez mod rewrite, jen adresa vypadá např. example.com/index.php/article/view/ |
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0