Oldal: 1 / 3 123 UtolsóUtolsó
Eredmény: 1 - 10 (30) összesen

Téma: Apache, url-rewrite

  1. #1
    Új tag
    Csatlakozott
    09-12-26
    Hozzászólás
    33
    Begyűjtött 0 köszönetet
    0 hozzászólásával

    Alapbeállítás Apache, url-rewrite

    Sziasztok!

    Küzdök az url-rewrite-vel. Sok anyagot átolvastam már a neten, sok gyakorlati példát láttam, ám mégsem sikerül.

    Eddig ezeket csináltam:

    1.) Telepítés és konfigurálás:
    Ezen link alapján készítettem egy virtuális XP-re:
    pcworld.hu/forum/index.php?showtopic=8249

    2.) Apache konfigurációs fájljából kiszedtem a kommentet az alábbi sor elől:
    LoadModule rewrite_module modules/mod_rewrite.so

    3.) Késztettem egy " .htaccess" fájlt, oda, ahol az apace az index.php-t az keresi, az alábbi tartalommal:
    <IfModule mod_rewrite.c>
    RewriteEngine on

    # Ebben az alkonyvtarban vagyunk, ezt
    # figyelembe kell venni az atirasoknal
    #RewriteBase /cegunkwebhelye

    # Minden nemletezo oldal webcimet iranyitsuk at az index.php-re
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?menuid=$1 [QSA]
    </IfModule>

    A történethez annyi hozzátartozik, hogy egy index.php-m van összesen, a tartalmát egy lekérdezés által adatbázisból gerenrálom, ami pl. így fog kinézni:

    localhost/index.php?menuid = 1

    Itt a menuid ami folyton változik.
    A problémám, az hogy az url-rewrite nem megy.
    Tesztelés céljából fogtam a " .htaccess" fájlomat, kitöröltem a tartalmát és beletettem ez:
    Errordocument 404 /index.php
    Beírtam hogy localhost/teszt.php és továbbra is az error 404-et kaptam. Ebből gondoltam, hogy valami nem stimmel az apache configjában talán.
    Persze ha beleírom a config fájlba, hogy Errordocument 404 /index.php akkor megy, de az url-rewrite-t szeretném megcsinálni.

    Minden hozzászólást szívesen veszek!

    Köszönöm:
    salliven



  2. #2
    Rubyist Geri logója
    Csatlakozott
    07-12-15
    Hely
    \x90
    Hozzászólás
    5.749
    Begyűjtött 1.432 köszönetet
    895 hozzászólásával

    Alapbeállítás re: Apache, url-rewrite

    nem teljesen értem sajnos amit írsz. ha jól gondolom azt szeretnéd hogy a localhost/akarmi url meghivására az index.php?menuid=akarmi url-t hivja meg a server. ebben az esetben a fent írt szabály tökéletes ami esetleg gondot okozhat hpgy localhost-on a rewritebase /localhost kellene hogy legyen(vagyis annak a mappának az elérési utja ahol a htaccess is van)


    If debugging is the process of removing software bugs, then programming must be the process of putting them in.
    Ruby blog
    Give a man a fish and you feed him for a day. Teach a man to fish and you feed him for a lifetime.
    Respect all, fear none

  3. #3
    Új tag
    Csatlakozott
    09-12-26
    Hozzászólás
    33
    Begyűjtött 0 köszönetet
    0 hozzászólásával

    Alapbeállítás re: Apache, url-rewrite

    Ebből szeretnék: localhost/index.php?menuid=1
    Ilyet: localhost/index.php/1



  4. #4
    Rubyist Geri logója
    Csatlakozott
    07-12-15
    Hely
    \x90
    Hozzászólás
    5.749
    Begyűjtött 1.432 köszönetet
    895 hozzászólásával

    Alapbeállítás re: Apache, url-rewrite

    Idézet salliven eredeti hozzászólása Hozzászólás megtekintése
    Ebből szeretnék: localhost/index.php?menuid=1
    Ilyet: localhost/index.php/1
    szerintem félreérted a mod_rewrite működését.
    a fentihez ez kell:
    Kód:
    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule index.php?menuid=(.*)  index.php/$1[QSA]
    </IfModule>
    ebben az esetben ha beirod a böngészőbe a localhost/index.php?menuid=1 cimet, akkor a localhost/index.php/1 fájlt fogja meghívni.
    de szerintem te nem ezt akarod hanem fordítva. ahhoz pedig ez a szabály kell:
    Kód:
    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^index.php/(.*)$ index.php?menuid=$1 [QSA]
    </IfModule>
    ennél a szabálynál ha beírod a cimsorba a localhost/index.php/1 cimet akkor a localhost/index.php?menuid=1 fájlt fogja a server meghívni. egyébként itt egy leírás olvasd el hátha segít: http://blog.greg-dev.com/seo/htaccess/



  5. #5
    Új tag
    Csatlakozott
    09-12-26
    Hozzászólás
    33
    Begyűjtött 0 köszönetet
    0 hozzászólásával

    Alapbeállítás re: Apache, url-rewrite

    Mosmár annyi infóm van, hogy kezdek elveszni benne. Így elnézve, lehet tényleg félre értettem a mod_rewrite működését, ezért had fogalmazzam meg az eredeti célkitűzésemet.

    Van:
    - 1 db index.php, amire linkeket generálok.
    - egy adatbázisom, ebből olvasom ki a linkhez tartozó adatokat. (title, metaadatok, tartalom, stb.)

    A linkeket egy lekérdezéssel generálom és a következő formát kapom:
    pl:
    index.php?menuid = 1
    index.php?menuid = 2


    ha rákkatintok erre a linkre: index.php?menuid = 1
    akkor a az adtázisban az adatok kiolvasása után a böngésző címsorában ezt szeretném látni:
    index.php/1

    Ez megoldható valahogy?
    Már az is nagy segítség, ha felvázolod, hogy milyen lehetőségeim vannak.

    Köszönöm!



  6. #6
    Rubyist Geri logója
    Csatlakozott
    07-12-15
    Hely
    \x90
    Hozzászólás
    5.749
    Begyűjtött 1.432 köszönetet
    895 hozzászólásával

    Alapbeállítás re: Apache, url-rewrite

    hát bizony félreérted. a linkeket neked kell ilyenre genrálnod: index.php/1, stb és az apache annyit csinál hogy ezen az url meghívja a index.php?menuid=1 -et. a cimsorban nem fogja megváltoztatni az url-t.



  7. #7
    Új tag
    Csatlakozott
    09-12-26
    Hozzászólás
    33
    Begyűjtött 0 köszönetet
    0 hozzászólásával

    Alapbeállítás re: Apache, url-rewrite

    Köszönöm az infót!
    Így tudom, hogy erre nem is kell több időt áldoznom.



  8. #8
    Rubyist Geri logója
    Csatlakozott
    07-12-15
    Hely
    \x90
    Hozzászólás
    5.749
    Begyűjtött 1.432 köszönetet
    895 hozzászólásával

    Alapbeállítás re: Apache, url-rewrite

    kár hpgy feladod, pedig nem nagy ördöngőség. az egésznek annyi a lényege a cimsorban beírd url-ek(tehát ami linkeket te generálsz) lesznek a keresőbarátak, a te esetedben pl index.php/1, viszont ezzel a szerver nem tud mit kezdeni, ezért az apachenak megmondjuk hogy helyette hívja meg az index.php-t egy get paraméterel ami esetedben a menuid.



  9. #9
    'Say Hello To My Little Friend'
    Csatlakozott
    09-11-20
    Hozzászólás
    10
    Begyűjtött 0 köszönetet
    0 hozzászólásával

    Alapbeállítás re: Apache, url-rewrite

    Nemrég én is küszködtem ezzel és az alábbi linken találtam egy egész jó leírást:

    hxxp://webmania[pont]cc/url-atirasok-apache-mod-rewrite/



  10. #10
    Hekker 0xFF logója
    Csatlakozott
    09-08-21
    Hozzászólás
    1.079
    Begyűjtött 168 köszönetet
    118 hozzászólásával

    Alapbeállítás re: Apache, url-rewrite

    Készítek egy katalógust, ( hxxp://tiny.cc/IMWfh ) és úgy döntöttem, hogy megcsinálom a keresőbarát URL -eket, viszonylag könnyen ment, de van 1-2 dolg ami nem tiszta a számomra.
    *A bal felső sarokban lehet váltani az URL ek között amíg még fejlesztgetem.


    itt a htaccess
    HTML kód:
    RewriteEngine on
    RewriteBase /
    RewriteCond %{SCRIPT_FILENAME} !-f
    RewriteCond %{SCRIPT_FILENAME} !-d
    RewriteRule ^(.*)$ /index.php?rw=$1 [L,QSA]
    Majd mindent a PHP intéz, amit meg is tesz, csak szerintem én bonyolítum túl egy picit a dolgot
    Szoval az összes GET és POST atfut ezen.
    PHP kód:
    $_GET array_map('trim'$_GET); 
    $_POST array_map('trim'$_POST); 
    $_COOKIE array_map('trim'$_COOKIE); 
    $_REQUEST array_map('trim'$_REQUEST); 
    if(
    get_magic_quotes_gpc()): 
        
    $_GET array_map('stripslashes'$_GET); 
        
    $_POST array_map('stripslashes'$_POST); 
        
    $_COOKIE array_map('stripslashes'$_COOKIE); 
        
    $_REQUEST array_map('stripslashes'$_REQUEST); 
    endif; 
    $_GET array_map('mysql_real_escape_string'$_GET); 
    $_POST array_map('mysql_real_escape_string'$_POST); 
    $_COOKIE array_map('mysql_real_escape_string'$_COOKIE); 
    $_REQUEST array_map('mysql_real_escape_string'$_REQUEST); 
    Majd a $_GET['rw'] -t explodolom $seo_url = explode("/",$_GET["rw"]);
    ezután jön egy nagyon zürös csere bere amivel vissza alakítom az értékeket, mintha simma GET lett volna.

    *Még csak ismerekedem a PHP val.
    PHP kód:
    switch ($seo_url[0])
            {
                case 
    "smokereport" : { 
                                     
    $seo_p "smokereport"
                                     if (
    $seo_url[1] == "add" ) {$seo_do "add"$seo_id $seo_url[2]; } 
                                     
                                     break; }            
                case 
    "bongesz"     : {$seo_p "navigate"$seo_do "abc"$seo_id ""; break;}
                case 
    "keres"       : {$seo_p "search"; break;}
                case 
    "keres_do"    : {$seo_p "search"$seo_do "search";  break;}
                case 
    "hozzad"      : {$seo_p "add";  break;}
                case 
    "hozzad_do"   : {$seo_p "add"$seo_do "add";   break;}
                case 
    "home"        : {$seo_p "home";  break;}
                case 
    ""            : {$seo_p "home";  break;}
                case 
    "kapcsolat"   : {$seo_p "contact";  break;}            
                default            : { 
                                       if ( isset(
    $seo_url[0]) && isset($seo_url[1])  && isset($seo_url[2]) )
                                         { 
    $seo_p "navigate"$seo_id $seo_url[2]; $ck_bank $seo_url[0]; $ck_name $seo_url[1]; }                                    
                                         else
                                         {
    $seo_p "navigate"$seo_id ""$seo_do ="err";  }
                                         
                                         
                                     }    
            } 
    A változók megkapják az értékeket maj dolgozok tovább velük mintha GET el jöttek volna.

    És akkor a kérdések.
    Miért van az hogy ha az url /valami/mas/ akkor $seo_url[2] nak is van értéke? lehet hogy NULL vagy " " nem tudom mert annyira még nem megy a PHP.

    Hogyan tudnám azt megcsinálni .htacess-ból, hogy csak maximum 3 paramétert engedjen vagyis, pl a /valami/mas/id/barmi/akarmi bol /valami/mas/id/ legyen 301 redirect kellene, csak nem tudom, hogy hogyan...

    Van-e valami okosság, a képekre meg a linkekre CSS-JS re, hogy minden elé ne keljen beszurni a $domain -t.

    Mennyire gond az, hogy pl a /kapcsolat és a /kapcsolat/barmi/valami/akarmi....
    Ugyanazt jelenítí meg, illetve hogyan szokás ezt kikuszöbölni.

    Köszönöm.



Oldal: 1 / 3 123 UtolsóUtolsó

A téma címkéi:

Könyvjelzők

Hozzászólás szabályai

  • Új témákat nem hozhatsz létre
  • Válaszokat nem küldhetsz
  • Fájlokat nem csatolhatsz
  • A hozzászólásaidat nem módosíthatod
  •