.htaccess rövid url-ek készítése

.htaccess rövid url-ek készítése
2010-10-14T00:10:13+02:00
2010-10-16T22:26:39+02:00
2022-07-26T02:41:51+02:00
danisoad
Sziasztok

Tudom hogy nagyon sokan feszegetik ezt a témát, nagyon sok leírás van a neten de egyiket sem sikerült sajnos megértenem, és alkalmaznom a saját igényeim szerint.

Van egy ilyen oldalam:
http://amatorhorgaszok.hu/index.php?lap=cikkadatlap&cikkazon=2

Szeretném azt elérni hogy ebből a csúnya url-ből
http://amatorhorgaszok.hu/index.php?lap=cikkadatlap&cikkazon=2


legyen ilyen:
http://amatorhorgaszok.hu/cikk/6+ponty+1+ejszaka+alatt


Nincsenek mappáim a szerveren.van egy index.php ami meghívja a cikkadatlap.php ami adatbázisből kéri be az adatokat, a legnagyobb bajom az volt hogy minden oldalon mappákat meg hasonlókat irogattak, de nekem nincsen ilyesmire szükségem csak a linket szeretném átalakítani.

Tudom hogy egyből a legnehezebbet akarom meg minden, de akkor is ezt szeretném elérni.
Abban szeretném a segítségeteket kérni hogy ehez valamiféle segédletet ami pontos leírást ad ahoz hogy ezt elérjem vagy ha ti magatok is segítetek.
Előre is köszönöm a megértéseteke és segítségeteket
Mutasd a teljes hozzászólást!
Például:
<IfModule mod_rewrite.c> Options +FollowSymlinks RewriteEngine On RewriteCond %{SCRIPT_FILENAME} !-d RewriteCond %{SCRIPT_FILENAME} !-f RewriteRule ^(.*)cikk/(.*)$ /index.php?lap=cikk&cikknev=$2 [QSA] </IfModule>

Itt a http://amatorhorgaszok.hu/cikk/6+ponty+1+ejszaka+alatt-ból lesz egy http://amatorhorgaszok.hu/index.php?lap=cikk&cikknev=6+ponty+1+ejsza..

A cikknev nevű URL-paraméterből le tudod kérni a cikk nevét, amit megkereshetsz az adatbázisban (ha le van tárolva a cikkhez valami URL-barát címváltozat), vagy PHP-ban egy switch/case szerkezettel kiválasztod a megfelelő cikket (de az meg ronda manuális dolog).

Olvasnivaló:
Rövid webcímek készítése és kezelése . Weblabor
Keresőbarát, szép url-ek
Mutasd a teljes hozzászólást!

  • Akkor ha jól értem amikor meglinkelem azt az oldalt amit szeretnék elérni akkor úgy kell hogy kinézzen hogy:

    <a href="http://amatorhorgaszok.hu/index.php?lap=cikk&cikknev=$lekerdeze['cikknev']"


    de így elvesztem az azonosítót nem?
    Ugye mert az eredeti linkben ott van a cikknek az azonosítója,
    és az alapján tudja a fájl hogy melyiket kell lekérdezi, namármost ha én í címet teszem oda akkor 1 címmel csak 1 cikk lehet.Akkor mi a megoldás?

    Köszi
    Mutasd a teljes hozzászólást!
  • 1. Vagy azt csinálod, hogy a cikk azonosítóját használod fel, ez esetben így fog kinézni a .htaccess:
    <IfModule mod_rewrite.c> Options +FollowSymlinks RewriteEngine On RewriteCond %{SCRIPT_FILENAME} !-d RewriteCond %{SCRIPT_FILENAME} !-f RewriteRule ^(.*)cikk/(.*)$ /index.php?lap=cikkadatlap&cikkazon=$2 [QSA] </IfModule>

    Ebben az esetben a http://amatorhorgaszok.hu/cikk/2 URL-ből http://amatorhorgaszok.hu/index.php?lap=cikkadatlap&cikkazon=2 URL lesz. Így rövidebb lesz az URL, de nem lesz "keresőbarát".

    2. Vagy az előző hozzászólásomban említett megoldást használod, ez esetben viszont szükséged lesz a "cikknev" paraméterben átadott érték és a cikk összekötésére.
    Ezt megteheted az adatbázisban - tehát az adott cikkhez hozzá kell rendelned a "cikknev" paramétert (fel kell venned egy új oszlopot az adatbázistáblában, ott felviszed a "cikknev" értéket); vagy megteheted egy switch/case szerkezettel:
    switch ($_GET["cikknev"]) { case "6+ponty+1+ejszaka+alatt": /* Itt meghívod a 2-es cikkazonosítójú cikket */ break; case "vadito+halcsali+ujdonsagok": /* Itt meghívod a 3-es cikkazonosítójú cikket */ break; default: /* Itt meghívod a 1-es cikkazonosítójú cikket */ break; }
    Mutasd a teljes hozzászólást!

  • <IfModule mod_rewrite.c> RewriteEngine On Options +FollowSymLinks RewriteOptions MaxRedirects=10 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule !^(.*\.(php|html|gif|jpg|jpeg|png|css|swf|js|ico|krs|xml))$ index.php [NC,QSA,L] RewriteRule ^(.*)cikk/(.*)$ /index.php?lap=cikkadatlap&cikkazon=$1 [QSA] </IfModule>

    Ezzel próbálkozom jelenleg.Elsőre megteszi a bánábbik link is majd ha megértettem akkor megoldom a másikat.
    Próbálkozom elérni az oldalt de csak ezt kapom:
    http://amatorhorgaszok.hu/cikk/2
    És ebben nincsen benne az adott cikk tartalma sem csak a sima kód, viszont forráskódban benne van a css től kezdve minden az oldalon viszont mégsem jelenik meg.EZ mitől lehet.
    Előre is köszi a választ
    Mutasd a teljes hozzászólást!
  • Ez a kifejezés:
    RewriteRule ^(.*)cikk/(.*)$ /index.php?lap=cikkadatlap&cikkazon=$1 [QSA]

    Ebből a linkből:
    http://amatorhorgaszok.hu/cikk/2

    ilyesmit csinál:
    http://amatorhorgaszok.hu/index.php?lap=cikkadatlap&cikkazon=
    (ugyanis a cikk és a domainnév közti részt adja át a cikkazon paraméternek)

    Javítsd ki ilyenre:
    RewriteRule ^(.*)cikk/(.*)$ /index.php?lap=cikkadatlap&cikkazon=$2 [QSA]
    Mutasd a teljes hozzászólást!
  • Átírtam de így sem jó. Nem értem hogy mi a problémája, megkérdeztem a tárhelyeseknél és engedélyezve van a .htaccess.

    <IfModule mod_rewrite.c> RewriteEngine On Options +FollowSymLinks RewriteOptions MaxRedirects=10 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule !^(.*\.(php|html|gif|jpg|jpeg|png|css|swf|js|ico|krs|xml))$ index.php [NC,QSA,L] RewriteRule ^(.*)cikk/(.*)$ /index.php?lap=cikkadatlap&cikkazon=$2 [QSA] </IfModule>
    Mutasd a teljes hozzászólást!
  • Az alábbi kifejezés:
    RewriteRule !^(.*\.(php|html|gif|jpg|jpeg|png|css|swf|js|ico|krs|xml))$ index.php [NC,QSA,L]
    nem szerepelt az eredeti megoldásomban, pont azt csinálja, hogy amelyik URL-nek nincsen megfelelő kiterjesztése (például a http://amatorhorgaszok.hu/cikk/2-nek nincs), azt irányítsa az index.php-re (paraméterek nélkül!).
    Mutasd a teljes hozzászólást!
  • Ja értem, én azt találtam az egyik oldalon hogy ezt pont hogy engedélyezi hogy megjelenjen a css től kezdve minden.
    Jelenleg most ott tartok hogy kezd működni a dolog.
    http://amatorhorgaszok.hu/cikk/2
    MOstmár benne van a tartalom iscsak a design hiányzik, pedig a lap forrásában az is benne van csak olyan mintha rossz lenne az elérhetősége, pl ha rámegyek egy menüre akkor ezt akarja csinálni:

    http://amatorhorgaszok.hu/cikk/2?lap=forum

    Kellene minden menü elé egy ../
    vagy ezt hogyan lehet megoldani mert szerintem ezért nem találja a design részt sem.
    Köszi a sok segítséget :)
    Mutasd a teljes hozzászólást!
  • "MOstmár benne van a tartalom iscsak a design hiányzik"
    Az index.php-ben minden tárhelyen levő állományra hivatkozz például így:
    /default.css /konyvtar/allomany
    Szóval legyen az állomány neve előtt egy / jel.
    Ezzel azt erőltetted, hogy a főkönyvtárból érje el az állományokat, könyvtárakat, ne a cikk könyvtárból.

    "http://amatorhorgaszok.hu/cikk/2?lap=forum"
    Itt pedig a link az alábbi legyen:
    /index.php?lap=forum
    Mutasd a teljes hozzászólást!
abcd