Kezdőoldal » Számítástechnika » Weblapkészítés » . Htaccess átirányítást hogy...

. Htaccess átirányítást hogy oldhatnám meg?

Figyelt kérdés

Eddig ennyi van megalkotva az átirányítós részből:

RewriteRule ^([^/]*)/([^/]*)/?$ /index.php?page=$1&id=$2 [L]


Amire működik is:

domain.com/hirek/

domain.com/hirek/1

domain.com/hirek/1/


Amire nem, de szeretném:

domain.com/hirek

(Tehát ne kelljen feltétlenül odatenni a / jelet akkor sem, ha csak a page van beállítva.) Pl. blog.hu-s blogoknál mindegy, hogy odaírjuk-e. Nekem viszont ilyenkor kiírja, hogy az oldal nem létezik. Esetleg a php-ban kéne valamit ügysekedni? Ha valakinek lenne ötlete, megköszönném a segítséget!



2013. jan. 18. 05:44
 1/9 anonim ***** válasza:
88%

Ezt vagy ehhez hasonlót írj a .htaccess fájlba:


ErrorDocument 404 /


A pédában a 404 értelem szerűen a "not found" hiba kódja,

a / pedig az a cím ahová a böngészőt átirányítjuk ha a hiba bekövetkezne... (képekre, scriptekre esetén is)


Így minden tartalom esetén amit nem talál a szerver a kezdőlapra vagy az általad megadott oldalra irányítja a látogatót (saját hibaoldalra vagy a /hírek/-re is).

2013. jan. 18. 08:20
Hasznos számodra ez a válasz?
 2/9 anonim ***** válasza:
69%

Blogoknál, cms rendszereknél általában csak egy rewrite van, amit onnan el is leshetsz. Aztán a kapott url-t már a php-d dolgozza fel. Ez lehet az egyik megoldás.

A másik megoldás, hogy tesztel a kérésednek megfelelő url-ekre is egy szabályt, pl:

RewriteRule ^([^/]*)$ /index.php?page=$1&id=naaznincs


Az előtte szólóhoz pedig: tudtommal nem szabad átirányításra használni a hiba oldalakat. Akkor működhet, ha a header-ben aztán ki is adod a megfelelő hibát. Márpedig egy weboldal kezdő oldala ne dobjon 404-es kódot.

2013. jan. 18. 10:06
Hasznos számodra ez a válasz?
 3/9 anonim ***** válasza:
100%

Dzs-z-nek (is):


Az ErrorDocument valójában nem a böngészőt irányítja át hanem a szerver által, az adott hiba esetén adandó választ határozza meg, ami lehet egy url vagy akár egy szöveges üzenet is.


Ha egy url-t adsz meg akkor annak az oldalnak nem kell feltétlenül hibakódot generálnia. Képzeld csak el hogy ha valaki elgépeli az url-t és az oldalad ekkor "404 not found" hiba állapotot és hibaoldalt dob a kliensnek vagy helyette "200 OK" állapottal és "Ön valószínűleg elgépelte a címet..." üzenettel hasonló címeket javasol a szervereden. Esetleg hiba nélkül egy kezdőlapra/kategória oldalra dob. A következő példák egyike hibás url, tehát "404 not found"-ot és hibaoldalt kellene kapnod, de helyette "200 OK"-t és kategóriaoldalt kapsz:


http://www.gyakorikerdesek.hu/szorakozas__zene__389386-mi-en..

www.gyakorikerdesek.hu/szorakozas__zene__1389386-mi-ennek-a-szamnak-a-cime-eloadoja

2013. jan. 18. 10:56
Hasznos számodra ez a válasz?
 4/9 anonim ***** válasza:

Hoppá elgépelés... és újra a 2 cím:


http://www.gyakorikerdesek.hu/szorakozas__zene__389386-mi-en..


http://www.gyakorikerdesek.hu/szorakozas__zene__1389386-mi-e..



Adminok: Miért nem lehet itt szerkeszteni a bejegyzésemet?

2013. jan. 18. 10:59
Hasznos számodra ez a válasz?
 5/9 anonim ***** válasza:
69%
Azigen errordocument-el ne akarj már redirectelni :D
2013. jan. 18. 12:26
Hasznos számodra ez a válasz?
 6/9 Drone007 ***** válasza:
100%

Én egy ilyen szabály szoktam alkalmazni:

RewriteRule ^(.*)$ /index.php?page=$1 [QSA]


Ezzel a $_GET["page"] változóba kerül az összes hívás.

az explode("/",$_GET["page"]) létrehozza az összes alhívást, azt a php-val vizsgálva már kiszedheted a megfelelő adatokat.

pl domain.com/hirek/2013/januar/18 esetén:

$sub = explode("/",$_GET["page"]);

$sub[0] = "hirek"

$sub[1] = "2013"

$sub[2] = "januar"

$sub[3] = "18"


Szerintem ez így használhatóbb, mint előre meghatározni, hogy hány szintre számítasz. Ilyenkor nyilván ha a végén "/" jel van, akkor lesz egy üres érték a tömb végén, de erre egy vizsgálatot írni már nem nagy kaland:

if (isset($sub[1]) && $sub[1]!="") {...}


Sok sikert!

2013. jan. 18. 12:51
Hasznos számodra ez a válasz?
 7/9 A kérdező kommentje:

Köszönöm a segítséget! Az errordocumentes átiárnyítást nem szeretném, mert már állítottam be egyéni hibaoldalakat. (000webhoston a 404-es hiba még a "saját" weboldalamról is elvisz az ő domainjére...)


Drone007 ötletét hasznosítottam sikerrel, egy kis módosítással:


RewriteRule ^([^.]*)$ /index.php?page=$1 [L]


azaz bármit be lehet írni, kivéve olyat, amiben pont szerepel. Szenvedtem egy pár percet mire rájöttem, addig mindenre 500 internal server errort adott...

2013. jan. 18. 20:02
 8/9 Drone007 ***** válasza:
100%

Csak arra vigyázz, ha nem használod a [QSA] stringet (query string append), akkor a get request adatok közül csak az elsőt kapja meg a php fájl.

[link]

2013. jan. 18. 21:38
Hasznos számodra ez a válasz?
 9/9 A kérdező kommentje:
Köszi hogy szólsz!
2013. jan. 18. 23:44

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!