Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
agat 10.07.2007 10:13 / 10.07.2007 10:42
Делается обычным мод_рирайтом Апача. Все несуществующие страницы передаются в страницу-обработчикRewriteEngine On RewriteBase / # прикрываем картинки RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://mysite.com/.*$ [NC] RewriteRule \.(gif|jpg|bmp|png)$ - [F] # все в индекс RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /process.html [L,QSA]process.html
@main[] ^Request:process[]Request.p
@CLASS Request ################################################ @auto[][sUri] $sQuery[$request:query] $sUri[$request:uri] $sUri[^sUri.split[?;lh]] $sPath[$sUri.0] $tBasePath[^sPath.split[/]] ^if($tBasePath){ $tBasePath[^tBasePath.select(^tBasePath.line[] > 1)] } ^if($tBasePath.piece eq "ru" || $tBasePath.piece eq "en" || $tBasePath.piece eq "tr"){ $sLanguage[$tBasePath.piece] } ^if(def $sLanguage){ $tPath[^tBasePath.select(^tBasePath.line[] > 1)] $sPath[/^if($tPath){^tPath.menu{$tPath.piece/}}] }{ $tPath[$tBasePath] } # end of @auto[] ################################################ @makePath[hParams] ^if(def $hParams.sLanguage){ $result[/$hParams.sLanguage/^tPath.menu{$tPath.piece/}^makeUri[ $.hExclude[ $.groupID[] $.itemID[] ] ]] } # end of @makePath[] ################################################ @process[][bFound] $bFound(0) ^if(-f $sPath || -d $sPath){ $bFound(1) ^Lib:location[$sPath^makeUri[]] }{ ^if($tPath){ ^tPath.menu{ $sGroupUri[$tPath.piece] } $tGroup[^Group:get[ $.uri[$sGroupUri] $.state[^State:getIndex[active]] ]] ^if($tGroup){ $bFound(1) ^Lib:location[/?groupID=$tGroup.id] } } } ^if(!$bFound){ ^Lib:location[/404/] } # end of @process[]Таким образом я упрощаю жизнь пользователям. Никто не станет спорить, что /product/wear/helmet/ запомнить намного проще, чем ?groupID=123&items=helmet&something=else&more=brainfucking&so=on. Можно, конечно, писать километры рирайт_рулов в .htaccess, но при динамическом наполнении сайта это утопия. Передать строку ури в страницу обработчик, вычислить и отдать нужную страницу - обычный финт.