CNC saját kezűleg (php)

Ez létrehozott egy csomó módon, hogy megteremtse a CNC:

  • mod_rewrite - általánosan használt technológia. Az ötlet az, hogy telepítse spetsovogo modul az Apache és hozzáad egy szabályt konvertáló rövid perjel teljes .htaccess RewriteRule ^ fájlt (# 91; * / # 93; *) \ rss /rss.php?type=$1. # 91; L # 93;

    +. elég könnyen megvalósítható módszer - rohant le a .htaccess szabályok és ennyi

    -: Szükséges, hogy a szerver telepítve a mod_rewrite, térfogati site - felhalmozási szabályok .htaccess

  • FileMatch - alapján FilesMatch irányelv, amely az Apache fő jellemzője. Ez egyszerű. Írásban ismét .htaccess

    Action dobás /index.php
    ForceType dobás


    ForceType application / x-httpd-php

    Ezek az irányelvek átirányít minden kérést. nem tartalmazó pontokat. A index.php. Ezután elemezni a lekérdezés - nem különösebben nehéz.

    +: Ugyanaz a könnyebb megvalósítás

    -: Szükséges, hogy a kiszolgáló telepítve mod_action modul

  • ErrorDocument - alapján derektivy a .htaccess fájlban az átadás kérelmet a nem létező URL a megadott fájlt. Ehhez hozzá kell adnunk a .htaccess:
  • ErrorDocument 404 /index.php ErrorDocument 401 /index.php

    +: IMHO a legegyszerűbb módja annak, hogy semmit telepíteni a szerver nem szükséges, az index kérelem érkezett. feldolgozott és örvendezzünk

    -: A szerver naplók felhalmozódnak jelentések 404 urlah. meg kell tiltani a fakitermelés hibák.

    A másik az, hogy azt mondják, hogy még azután is egy kérést átirányítja egy nem létező osztásjeleket egy meglévő fájlt, a szerver meg fogja mutatni a megfelelő oldalon, de pontosan 404 staatu visszatérhet erre az oldalra. Tehát nem volt - meg kell adni a Start index.php header ( "HTTP / 1.0 200 OK");

    Biztos vagyok benne, hogy számos módszer létezik, de mi korlátozzuk magunkat ezekre.

    Az én esetemben nem volt mód arra, hogy az első jelentését. nem világos, hogy a szerver a fogadó állni mod_rewrite (bár általában a költségek;)). Második - Még nem szerzett. Nem tudom, miért, (a fennmaradó harmada ahogy csak megszerezte a vártnak A nehézség feküdt az átalakulás CNC shnogo Urla és rendszeres, és fordítva CMS Joomla (és még sokan mások látszólag) erre a célra használják, az adatbázis és dinamikusan generál új URL-eket ... . MNU nem futott bo dolgozott ugyanazon Jumla volt győződve arról, hogy az oroszlánrészét időt töltött a kialakulását az oldalt, és keresse meg a formáció ezen URL-ek egy adatbázisban kívánatos lenne megoldást találni adatbázis nélkül, és úgy találtam, hogy az alsó sorban egy sor szabályok formájában ...:

    Ahhoz, hogy kezelni ezeket, írtam spetsovy osztály (az osztály is, és a minta fájl található vkontse cikket). Szétszedni az osztály is, mi nem, és posomtrite módon bizonyítani, hogy a példákat.

  • Csatlakoztatása és használata CNC Online $ links = új linkek ($ url, $ use_ufu); // $ url - a neve az oldalon. Hozzá kell adni a kérdést előterjesztő generáció $ use_ufu (0 \ 1) - használjon NC-e vagy sem
    if ($ use_ufu == 1) require_once ( "Links.rules.php"); // betöltött szabályok fájl
    if (isset ($ linksUrls) is_array ($ linksUrls)) // ha van egy tömb a szabályokat - do inicializálás
    $ Linkek-> init ($ linksUrls);
    >

    Tartalom Links.rules.php file:

    $ LinksUrls = array ();
    $ LinksUrls # 91; # 93; = array ( 'hírek', "do =?");
    $ LinksUrls # 91; # 93; = array ( 'news /?', "Do = news_id = ??");
    // mod oldalak
    $ LinksUrls # 91; # 93; = array ( 'oldalak', "do =?");
    $ LinksUrls # 91; # 93; = array ( 'oldalak /?', "Do = pid = ??");

  • Elemzés CNC shnogo Urla és kialakulhatna egy GET kérés esetén (isset ($ _ SERVER # 91; 'REDIRECT_STATUS' # 93;) $ _SERVER # 91; 'REDIRECT_STATUS' # 93; == '404') $ url = $ _ SERVER # 91; 'REQUEST_URI' # 93 ;;
    ha // 404-es hiba ($ Linkek-> parseURL ($ url)!);
    die ( „Sajnos az oldal nem található” „);
    >
    >
    print_r ($ _ GET);

    Ha minden jól megy - a $ _GET tömb változók hozzá, amely korábban alkalmazott tipikus kérelmet. Azt kell mondani, hogy a kérelemben meg kell lennie a forma / pages / 2. Azt is meg kell állapítani, hogy megadhatja a változókat, amelyek nincsenek meghatározva a szabályozások, mint a szokásos kérés / pages / 2? Ize = 5

  • Generation egy hagyományos CNC kérés
  • $ Linkek-> createUFU ( 'index.php do = oldalakon?');
    // eredmény: site.com/pages/

    Természetesen megértjük, hogy a folyamat nem általános, de elég könnyen megvalósítható, könnyen használható.

    Mindenesetre, én hálás lesz minden megjegyzést \ kritika, mert segítenek, hogy javítsa kód \ módszer \ módszer)

    TODO: Most NC shnyj URL képződött vegyületet egy hagyományos értéket törtvonal „/”. A jövőben azt tervezzük, hogy távolítsa el a kötési sorrendjét következő változók a szokásos Urla.

    Osztály és példák vannak itt.

    UPD: egy megfelelő módszert ismertet írásában CNC

    kéz (PHP). CNC Storage adatbázis

    Általában kösz a cikket korábban a .htaccess próbáltam, de nem működött, most megpróbálom át az osztály)))

    Próbáld elérni a célt, hogy ment.

    PS: írok egy cikket a CNC (amely ismerteti az elvben független a rendszer.).

    ZYY: A leírt technológia (azaz ErrorDocument 404 /index.php) van egy jelentős hátránya - a képtelen kezelni a bejegyzést adatokat. Ezért azt tanácsolom mindenkinek, hogy ugyanazt a revrayt divat átirányítani az összes kérés index oldal.

    Az elfogadott módszer, mégis.

    kap, hogy a $ _SERVER [ "REQUEST_URI"]? Vonal típusa: / / hírek / 2 ?.

    Az egyetlen hátránya - a kérdőjel. Előnyök: ne tegye a szerveren. htaccess és rönk ne érintse.

    IMHO könnyebb és jobb, hogy egy .htaccess revrayn az index (ez revrayn nem igazgatók index). Így is, az események nem lehet eltömődve. De a kérdőjel Urla - Én személy szerint nem tetszik =)

    PS% van egy másik lehetőség, hogy tárolja URL egy adatbázisban, mivel ez ugyanaz a Joomla (több SEF), de ez a változat a jelenlegi megközelítés a kis telek.

    Ez, valamint egy pár lehetőség fogom leírni, mint egy szál a cikket. hi aktuális idő jelenik =)

    A hasított minta vikoristovuvati tartjuk upstream router Yaky fіltruє peredavaєmі paraméter keresztül preg_match, jak Taqiy vikoristali a Zend Framework

    Kapcsolódó cikkek