mod_rewrite trūkums - papildslodze (kaut arī laikam neliela) procesoram, ErrorDocument - tas, ka šis ir "netīrs haks" "caur d.", un piesārņo error logu ar fake kļūdām..
Bet ir viena ļoti laba un vienkārša metode, kā šo lietu paveikt bez mod_rewrite, un bez ErrorDocument. Parasti tutoriāļos tā nav aprakstīta, tur uzreiz, ja runā par nice/cool/user-friendly URLs, uzreiz ķeras pie mod_rewrite, kā vienīgā iespējamā varianta. Apmēram, tā kā bija 'govorim "Partija", dumaem - Ļeņin!'
Karoče, lieta ir tāda. Priekšnosacījums mod_rewrite NEizmantošanai: pirmais folderis URLī ir reāli eksistējošs FAILS. Ļoti piemērots variants daudzvalodīgajos webos, kas ir raksturīgi .lv zonā. Tad weba sāknē uztaisām failus ar nosaukumiem lv, en, ru; .htaccess'ā vai (labāk) apača config'ā nodefinējam, lai šos failus šajā folderī (t.i. ar pilnu ceļu) parsē PHP. Uz *NIX'ā šie faili būs symlink'i uz index.php, uz WIN tie saturēs vienu rindiņu <?php require 'index.php'; ?>
Un tālāk, iekš index.php (vai labāk, nosaukt viņu ~ zverudarzs2006.php, lai nekur neparādās URLī, noslēpjot PHP izmantošanas faktu), darām apmēram tā:
# definējam valodu
$lang = basename($_SERVER['SCRIPT_NAME']);
if (!in_array($lang, $CFG['languages'])) $lang = $CFG['languages'][0];
# parsējam URLi masīvā
if (@$_SERVER['PATH_INFO']) {
$url_array = explode('/', strip_tags($_SERVER['PATH_INFO']));
array_shift($url_array);
} else {
$url_array = array();
}
# tagad šo masīvu var izmantot savām vajadzībām
//echo "<pre>"; print_r($url_array); echo "</pre>";
Šo metodi izmantoju, piemēram, šeit (linku piemēri):
http://smarthouse.lv/lv/gaisma
http://smarthouse.lv/lv/produkti/filosofija
p.s. serveris.lv uz kura jams stāv, gan nežēlīgi bremzē, laikam, savākušies pārāk daudz klientu, un pārslogots..]