====== Přepisování URL ======
https://www.dokuwiki.org/rewrite
Ve výchozím stavu DokuWiki žádné URL nepřepisuje, takže adresy vypadají takto:
http://example.com/doku.php?id=wiki:syntax
Tyto adresy jsou poněkud nevzhledné a některé vyhledávače je nemusí dobře indexovat. Přepisování URL nabízí řešení v podobě „hezčích“ adres.
===== Možnosti přepisování =====
DokuWiki podporuje dvě metody přepisování URL, které se zapínají volbou [[doku>config:userewrite]]. Jedna spoléhá na schopnosti přepisování webového serveru, druhá zpracovává přepsané adresy uvnitř DokuWiki. Přehled možností je v tabulce.
^ Hodnota ^ Popis ^ Příklad URL ^
| 0 | Přepisování URL se nepoužívá. Výchozí stav. | %%http://example.com/dokuwiki/doku.php?id=wiki:syntax%% |
| 1 | Přepisování provádí webový server. | %%http://example.com/dokuwiki/wiki:syntax%% |
| 2 | Přepisování provádí DokuWiki. | %%http://example.com/dokuwiki/doku.php/wiki:syntax%% |
Přepisování URL je ve výchozím stavu vypnuto, protože kromě nastavení příslušné [[doku>config:userewrite|konfigurační volby]] vyžaduje i další konfiguraci – ta je popsána níže.
==== Varianta 1: webový server ====
Tato varianta vyžaduje nejprve nastavení na webovém serveru. Způsob zapnutí závisí na použitém serveru. Podrobnosti viz odkazované stránky.
* [[doku>install:Apache]] - používá modul [[http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html|mod_rewrite]]. Lze povolit pomocí souboru ''.htaccess''.
* [[doku>install:IIS]] - používá vlastní přepisovací pravidla nebo modul pro přepisování.
* [[doku>install:nginx]] - má vestavěnou podporu přepisování.
* [[doku>install:caddy]] - má vestavěnou podporu přepisování.
* [[doku>install:php-webserver|Vestavěný webový server v PHP]] - nevyžaduje konfiguraci, přepis funguje přes router DokuWiki v index.php.
Jakmile je na serveru podpora přepisování povolena, lze tuto volbu zapnout i v konfiguraci DokuWiki.
V rozbalovací nabídce [[doku>config:userewrite|userewrite]] zvolte možnost ''.htaccess''. Alternativně přidejte nebo upravte řádek v souboru ''conf/local.php'' takto:
$conf['userewrite'] = 1;
V kořenové složce DokuWiki najděte soubor ''.htaccess.dist'' a zkopírujte ho jako ''.htaccess''. Otevřete ho a odkomentujte řádky týkající se userwrite. Soubor je krátký a snadno pochopitelný.
==== Varianta 2: DokuWiki ====
Tato varianta nevyžaduje žádné nastavení webového serveru. Spoléhá však na funkci PATH_INFO standardu CGI tak, jak ji implementuje Apache. Některé konfigurace serveru ji nemusí podporovat.
Pro zapnutí této volby vyberte v rozbalovací nabídce [[doku>config:userewrite|userewrite]] možnost ''DokuWiki internal''. Alternativně přidejte nebo upravte řádek v souboru ''conf/local.php'' takto:
$conf['userewrite'] = 2;
===== Čisté ID relace PHP =====
I při „čistých“ URL se může v adrese objevit parametr „DokuWiki“, například:
ID relace PHP:
http://example.com/example?DokuWiki=c81a95369a66576982119e2a60b557a5
Tento parametr je PHP session ID a PHP jej přidává automaticky. S přepisováním URL nesouvisí. Aby se neobjevoval, lze vynutit používání cookies pro sezení nastavením volby ''session.use_only_cookies'' v PHP.
Obvykle se to provádí v konfiguračním souboru php.ini:
session.use_only_cookies=1
Můžete také zkusit:
session.use_trans_sid=0
====== Viz také ======
* [[doku>tips:httpslogin|Přepisovací pravidla pro bezpečné přihlášení]]
* [[https://stackoverflow.com/questions/9153262/tips-for-debugging-htaccess-rewrite-rules | Tipy pro ladění přepisovacích pravidel v .htaccess]]