Ноя 23
2008пыха. день первый) url rewrite rules = apache || php? JUST DO IT WITH PHP (:
Рубрики: (nginx, Апаче (не вертолет), КодЛинч 0.1 beta, Полезные штуки) Автор: phpdude 23-11-2008
Теги : apache, epsyl, htaccess, md5(oO), mod_rewrite, nginx, php, pyha, rewrite, rewriterule
кароч. епсил чето говрил насчет пыхи. зашол, зарегался, 40 тем в форуме в профи разделе…
наткнулся http://pyha.ru/forum/topic/1205.0
думаю что это все таки частая проблема
apache mod_rewrite rules – не ПАНАЦЕЯ и это должен знать каждый!
у человека хорошая идея (тимур .. имя знакомое, но похуй).
порой хочется красивые юрлы, и в них надо бы красиво чето передавать еще.
можно в лоб, как это делает например DLE. убил бы автора такого метода ножом в шею.
DirectoryIndex index.php
RewriteEngine On
# ╨хфшЁхъЄ√
RewriteRule ^page/(.*)$ index.php?cstart=$1 [L]# ╤рь яюёЄ
RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/page,([0-9]+),([0-9]+),(.*).html(/?)+$ index.php?subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&cstart=$5&news_name=$6 [L]
RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/page,([0-9]+),(.*).html(/?)+$ index.php?subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&news_name=$5 [L]
RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/print:page,([0-9]+),(.*).html(/?)+$ engine/print.php?subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&news_name=$5 [L]
RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/(.*).html(/?)+$ index.php?subaction=showfull&year=$1&month=$2&day=$3&news_name=$4 [L]RewriteRule ^([^.]+)/page,([0-9]+),([0-9]+),([0-9]+)-(.*).html(/?)+$ index.php?newsid=$4&news_page=$2&cstart=$3 [L]
RewriteRule ^([^.]+)/page,([0-9]+),([0-9]+)-(.*).html(/?)+$ index.php?newsid=$3&news_page=$2 [L]
RewriteRule ^([^.]+)/print:page,([0-9]+),([0-9]+)-(.*).html(/?)+$ engine/print.php?news_page=$2&newsid=$3 [L]
RewriteRule ^([^.]+)/([0-9]+)-(.*).html(/?)+$ index.php?newsid=$2 [L]RewriteRule ^page,([0-9]+),([0-9]+),([0-9]+)-(.*).html(/?)+$ index.php?newsid=$3&news_page=$1&cstart=$2 [L]
RewriteRule ^page,([0-9]+),([0-9]+)-(.*).html(/?)+$ index.php?newsid=$2&news_page=$1 [L]
RewriteRule ^print:page,([0-9]+),([0-9]+)-(.*).html(/?)+$ engine/print.php?news_page=$1&newsid=$2 [L]
RewriteRule ^([0-9]+)-(.*).html(/?)+$ index.php?newsid=$1 [L]# ╟р фхэ№
RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})(/?)+$ index.php?year=$1&month=$2&day=$3 [L]
RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/page/([0-9]+)(/?)+$ index.php?year=$1&month=$2&day=$3&cstart=$4 [L]
# ╟р тхё№ ьхё Ў
RewriteRule ^([0-9]{4})/([0-9]{2})(/?)+$ index.php?year=$1&month=$2 [L]
RewriteRule ^([0-9]{4})/([0-9]{2})/page/([0-9]+)(/?)+$ index.php?year=$1&month=$2&cstart=$3 [L]
# ┬√тюф чр тхё№ уюф
RewriteRule ^([0-9]{4})(/?)+$ index.php?year=$1 [L]
RewriteRule ^([0-9]{4})/page/([0-9]+)(/?)+$ index.php?year=$1&cstart=$2 [L]
# т√тюф юЄфхы№эюьє Єхує
RewriteRule ^tags/([^/]*)(/?)+$ index.php?do=tags&tag=$1 [L]
RewriteRule ^tags/([^/]*)/page/([0-9]+)(/?)+$ index.php?do=tags&tag=$1&cstart=$2 [L]
# т√тюф фы юЄфхы№эюую ■чхЁр
RewriteRule ^user/([^/]*)/rss.xml$ engine/rss.php?subaction=allnews&user=$1 [L]
RewriteRule ^user/([^/]*)(/?)+$ index.php?subaction=userinfo&user=$1 [L]
RewriteRule ^user/([^/]*)/news(/?)+$ index.php?subaction=allnews&user=$1 [L]
RewriteRule ^user/([^/]*)/news/page/([0-9]+)(/?)+$ index.php?subaction=allnews&user=$1&cstart=$2 [L]
RewriteRule ^user/([^/]*)/news/rss.xml(/?)+$ engine/rss.php?subaction=allnews&user=$1 [L]
# т√тюф тёхї яюёыхфэшї эютюёЄхщ
RewriteRule ^lastnews/(/?)+$ index.php?do=lastnews [L]
RewriteRule ^lastnews/page/([0-9]+)(/?)+$ index.php?do=lastnews&cstart=$1 [L]
# т√тюф т тшфх ърЄрыюур
RewriteRule ^catalog/([^/]*)(/?)+$ index.php?catalog=$1 [L]
RewriteRule ^catalog/([^/]*)/page/([0-9]+)(/?)+$ index.php?catalog=$1&cstart=$2 [L]
# т√тюф эхяЁюўшЄрээ√ї ёЄрЄхщ
RewriteRule ^newposts(/?)+$ index.php?subaction=newposts [L]
RewriteRule ^newposts/page/([0-9]+)(/?)+$ index.php?subaction=newposts&cstart=$1 [L]
# ╤ЄрЄшёЄшўхёъшх ёЄЁрэшЎ√
RewriteRule ^static/(.*).html(/?)+$ index.php?do=static&page=$1 [L]
# т√тюф шчсЁрээ√ї ёЄрЄхщ
RewriteRule ^favorites(/?)+$ index.php?do=favorites [L]
RewriteRule ^favorites/page/([0-9]+)(/?)+$ index.php?do=favorites&cstart=$1 [L]RewriteRule ^rules.html$ index.php?do=rules [L]
RewriteRule ^statistics.html$ index.php?do=stats [L]
RewriteRule ^addnews.html$ index.php?do=addnews [L]
RewriteRule ^rss.xml$ engine/rss.php [L]
RewriteRule ^sitemap.xml$ uploads/sitemap.xml [L]RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^.]+)/page/([0-9]+)(/?)+$ index.php?do=cat&category=$1&cstart=$2 [L]
RewriteRule ^([^.]+)/?$ index.php?do=cat&category=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^<]+)/rss.xml$ engine/rss.php?do=cat&category=$1 [L]
RewriteRule ^page,([0-9]+),([^/]+).html$ index.php?do=static&page=$2&news_page=$1 [L]
RewriteRule ^([^/]+).html$ index.php?do=static&page=$1 [L]
сразу видно что нихуя не думает их архитектор, и что этот движек – его первый опыт планирования.
да, это конечно вариант, но не хороший.
почему? а попробуйте найдите реврайт для /news/251-that-is-fucking-title.html
вот и я не стану.
это был первый минус. второй! вдруг я захожу развернуть DLE например на ZEUS web server или Nginx! и чаго? пиздец урлам? правильно, урлам пиздец.
чтоже делать тогда ?
лучше перенаправлять все в индекс.пыхахы и чтобы он все разбирал! не верите?
вот вам пример такого исполнения:
.htaccess
RewriteEngine On
RewriteRule .* index.php
мало? сможете такие е правила воспроизвести на нгинкссе? вот и я смогу. далее самое интересное
предложенный кем то в теме метод preg_match_all – ебень. можно конечно, но это все-таки преги. лучше ух по старинке.
<?
$request = substr($_SERVER['REQUEST_URI'],strrpos($_SERVER['SCRIPT_NAME'],«/»)+1);$get = strpos($request,«?»)===false ? $request : substr($request,0,strpos($request,«?»));
$get = split(«/»,$get);$_GET = array();
foreach($get as $v)
{
$v = explode(«-»,$v);
$_GET[$v[0]] = $v[1];
}if(strpos($request,«?»)!==false)
{
parse_str(substr(strstr($request,«?»),1),$_GET['PARAMS']);
}print_r($_GET);
die();
многие могут подумать что я дурак раз так делаю. мне похуй, думайте. по поводу первой строки тоже могут возникнуть споры, но я уверен что этот вариант лучший и будет работать на всех веб серверах с меньшей еблей.
аривидерчи.
Всея ПЫХА
adw0rd
Мавр
ГО
Irinax
лучший!
спасибо за комент. думал блог уже никто не читает)
На счет DLE – ваще жесть, а так в принципе так и делают, рерайт на главную, а там парсинг