Той създал много начини за създаване на ЦПУ:
+. сравнително лесно да се приложи метод - хукна към правилата на .htaccess и това е всичко
-: Необходимо е, че сървърът е инсталиран правилно на mod_rewrite, с обемна сайт - правила натрупване в .htaccess
Действие хвърлей /index.php
ForceType хвърлей
ForceType прилагане / х-уеб--PHP
Тези директиви ще пренасочват всички заявки. които не съдържат точки. на index.php. След това направи разбор на заявката - не е особено трудно.
+: В същата лекота на изпълнението
-: Необходимо е, че сървърът е инсталиран модул mod_action
+: IMHO най-лесният начин да инсталирате нищо на сървъра не е необходимо, в индекса получи искане. обработват и се радвайте
-: На сървъра трупи натрупват доклади 404 urlah. това е необходимо, за да забраните дърводобива от грешки.
Друго е да се каже, че дори и след искане пренасочва към несъществуващи черти на съществуващ файл, сървърът ще покаже правилната страница, но точно 404 staatu върнете на тази страница. Така че това не е - това е необходимо да се добавят Старт index.php с глава ( "HTTP / 1.0 200 Ok");
Сигурен съм, че има много начини, но ние ще се ограничим с тези.
В моя случай, не е имало начин да се вземе първото значение. не е ясно дали на сървъра на хоста стои mod_rewrite (макар и обикновено струва;)). Второ - не съм спечелил. Аз не знам защо, (останалата една трета от пътя той просто печели, както се очаква че трудността трансформацията на CNC shnogo Урла и редовно, както и обратното CMS Joomla (и много други привидно), използвани за тези цели, базата данни и генерира динамично нови URL адреси ... . MNU не бързам бо е работил при същия Jumla бил убеден, че лъвският пай от времето, прекарано на формирането на страницата и да търсите за формирането на тези URL адреси в база данни, би било желателно да се намери решение, без база данни, и аз го намери в най-долния ред е набор от правила за формата ...:
За да се справят с тези URL адреси, аз написах spetsovy клас (на самия клас, както и примерни файлове могат да бъдат намерени vkontse статия). Демонтирайте самия клас, ние не ще, и posomtrite начини да демонстрират как примерите.
ако ($ use_ufu == 1) require_once ( "Links.rules.php"); // зарежда от файла с правила
ако (Isset ($ linksUrls) is_array ($ linksUrls)) // ако има масив с правилата - правя инициализация
$ Links-> първоначален ($ linksUrls);
>
Съдържание Links.rules.php файл:
$ LinksUrls = масив ();
$ LinksUrls # 91; # 93; = масив ( "новини", "правя =?");
$ LinksUrls # 91; # 93; = масив ( "новина /?" Do = news_id = ?? ");
// мод страници
$ LinksUrls # 91; # 93; = масив ( "страници", "правят =?");
$ LinksUrls # 91; # 93 = масив ( "страници /?", "Do = PID = ??");
ако // грешка 404 ($ links-> parseURL ($ URL)!);
умре ( "За съжаление, страницата не е намерена '');
>
>
print_r ($ _ GET);
Ако всичко мине добре - в променливите масив на $ _GET ще бъде добавен, което използва използван в типичен поискване. Трябва да се каже, че искането трябва да бъде във вида / страници / 2-ро Трябва също да се посочи, че можете да зададете на променливите, които не са описани в регламента, както е по обичайния искане / страници / 2? Foo = 5
// резултат: site.com/pages/
Аз със сигурност се разбере, че процесът не е универсален, но това е доста лесно за изпълнение, лесен за използване.
Във всеки случай, аз ще бъда благодарен за всякакви коментари \ критика, тъй като те могат да помогнат код \ метод \ метод, за да се подобри;)
ЗАДАЧИ: Сега NC shnyj URL съединение, образувано от конвенционален стойност използване черти "/". В бъдеще планираме да премахнете задължителен ред на следващата променливи в обичайния Урла.
Клас и примери са тук.
UPD: по-подходящ метод е описан в статията си CNC
ръце (PHP). база данни за съхранение на CNC
Като цяло, благодаря за статията, по-рано през .htaccess се опитаха, но не работят, сега ще се опитам чрез вашия клас)))
Опитайте се да постигнете целта си как е минало.
PS: Пиша друга статия на ЦПУ (в който се описва принцип не зависи от системата за контрол.).
ZYY: Описаната технология (а именно ErrorDocument 404 /index.php) има значителен недостатък - невъзможност да се справят пощенските данни. Ето защо, аз съветвам всички да използват една и съща revrayt модата да пренасочи всички заявки към индексната страница.
Приетият метод, все пак.
които му се изпречат на $ _SERVER [ "REQUEST_URI"]? линия тип: / / новини / 2 ?.
Единственият недостатък - въпросителния знак. Плюсове: не слагат на сървъра. Htaccess и трупи не се допират.
IMHO е по-лесно и по-добре да се сложи в .htaccess revrayn върху индекса (не revrayn директорите индекс). Същото важи и трупи, няма да бъдат запушени. Но въпросителния знак в Урла - Аз лично не ми харесва =)
PS% има и друг вариант за съхранение на URL адреси в база данни, тъй като той прави същото Joomla (повече SEF), но тази версия на настоящия подход за малки обекти.
Това, както и няколко опции ще опиша като нишка в статията. Здравейте появява текущото време =)
Един модел прорез vikoristovuvati имаха преди рутер Yaky fіltruє peredavaєmі параметър чрез preg_match, як Taqiy vikoristali в ZendFramework
Свързани статии