Default RewriteRule
Helló, van egy félig működő kódom. Amit el akarok érni, hogy az előre beállított oldalak elérhetőek legyenek (ez OK), de azon kívül ugorjon egy standard oldalra (evvel van probléma). A következő kód az utolsó (problémás) sor elrejtése miatt működik:
Ha kiveszem a kommentet, "átirányítási hurok" jelzést kapok FireFox-tól, ha az Redirect R-jét is kiveszem (tehát csak [L] -t hagyok), akkor meg Internal Server Error-t kapok Apache-tól.
Kérlek, segítsetek megoldani a problémát, már ez a 4. fórum ahova írok, mert eddig napok óta nem kaptam választ az előző fórumokról (gondolom nem kompetensek), és fontos lenne, hogy megoldódjon!
Előre is Köszönöm a Válaszokat!!!
Üdv, DarkLight
■ RewriteBase /
Options +FollowSymLinks
RewriteEngine on
#ErrorDocument 403 /stand/stand/stand
#ErrorDocument 404 /stand/stand/stand
#RewriteCond %{REQUEST_FILENAME} !-d
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} -U
RewriteRule ^script/(.*)/?$ /script/$1 [L]
RewriteRule ^style/(.*)/?$ /style/$1 [L]
RewriteRule ^admin/?$ /admin.php [L]
RewriteRule ^admin/(.+)/?$ /admin.php?p=$1 [L]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/?$ /index.php?l=$1&t=$2&p=$3 [L]
#RewriteRule ^.*$ /stand/stand/stand [R,L]
Options +FollowSymLinks
RewriteEngine on
#ErrorDocument 403 /stand/stand/stand
#ErrorDocument 404 /stand/stand/stand
#RewriteCond %{REQUEST_FILENAME} !-d
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} -U
RewriteRule ^script/(.*)/?$ /script/$1 [L]
RewriteRule ^style/(.*)/?$ /style/$1 [L]
RewriteRule ^admin/?$ /admin.php [L]
RewriteRule ^admin/(.+)/?$ /admin.php?p=$1 [L]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/?$ /index.php?l=$1&t=$2&p=$3 [L]
#RewriteRule ^.*$ /stand/stand/stand [R,L]
Ha kiveszem a kommentet, "átirányítási hurok" jelzést kapok FireFox-tól, ha az Redirect R-jét is kiveszem (tehát csak [L] -t hagyok), akkor meg Internal Server Error-t kapok Apache-tól.
Kérlek, segítsetek megoldani a problémát, már ez a 4. fórum ahova írok, mert eddig napok óta nem kaptam választ az előző fórumokról (gondolom nem kompetensek), és fontos lenne, hogy megoldódjon!
Előre is Köszönöm a Válaszokat!!!
Üdv, DarkLight
olvasd el ezt:
OK, megvolt
RewriteRule ^.*$ /stand/stand/stand [R,L]
RewriteRule, azaz evvel írom át az URL-t
^...$, azaz a kezdettől a végéig
.*, azaz bármilyen szöveg lehet //tehát ha eddig valamit átírt, azért a fenti soroknál [L] miatt megáll. Ez pedig minden esetben teljesülni fog.
/stand/stand/stand, azaz erre a helyre irányítja át
[R,L], azaz nem csak simán átírja, hanem kéri a klienst, hogy igenis, kérje le még egyszer, így, helyesen ( [R] ), és ezek után ne nézzen mást ( [L] ).
Eddig OK, ez a Joker. De honnan tudjam, hogy /stand/stand/stand -ot feldolgozza-e valami? A következőbe fog beleakadni:
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/?$ /index.php?l=$1&t=$2&p=$3 [L]
RewriteRule, ismét átírom
^...$, megint mindent nézek
(...), azaz az itt levő kifejezésre $1 és $9 között tudok hivatkozni, sorrendtől függ a szám
[^/]*, azaz minden karaktert felismer, kivéve a / jelet, azaz a szöveg kezdetétől / jelig bármi lehet, erre tudok hivatkozni $1-gyel
/([^/]*)/, azaz a következő, $2 tartalom a / jeltől levő / jelig tart
([^/]*), ez lesz az utolsó vagy utolsó előtti / jel utáni tartalom, ami $3 lesz
/?, azaz a végén vagy van /, vagy nincs, ezért volt az a bizonytalanság az előző sorban.
Nem akarom tovább sorolni, egyértelműen át lesz írva index.php?l=stand&t=stand&p=stand -ra, de ez a # miatti rejtés miatt be is bizonyosodott, mert így bejön ez az oldal, és a stand, azaz standard értékeket ez a php szkript feldolgozza, és egyébként javascript segítségével átirányítással javítja.
Tehát én nem találom benne a hibát, de valahol mégis ott van. A kérdés, hogy hol. Tudom, vannak olyanok, akik kis kutakodás után feladják, és úgy jönnek ide, de asszem most bizonyítottam, hogy nem ide tartozok, úgyhogy légyszíves, normálisan válaszolj, próbáljuk meg együtt megfejteni a hiba okát, mert én ehhez egyedül kevés vagyok, nem értem, miért kapok hibajelzést, ilyen eset még soha nem fordult velem elő.
Továbbra is várom válaszotokat a problémával kapcsolatosan.
Üdv, DarkLight
Ha jól értem, akkor azt
Az R flag felesleges ezt tényleges külső átirányítás során szoktuk használni, azaz ha másik domainra dobod a látogatót.
Az L-nél azért kapsz 500-as hibát mert a stand/stand/stand útvonal ténylegesen nem létezik, azaz a szerver nem tudja kiszolgálni.
Szerintem neked az utolsó sorként valami ilyesmi kellene:
RewriteRule ^.*$ index.php?l=stand&t=stand&p=stand [L]
Mivel nem egészen értem, hogy valójában pontosan mire is van szükséged nem biztos, hogy ez véglegesen megoldja a problémádat. Mindenesetre próbáld még egyszer elolvasni a fenti cikket és megérteni a logikáját. Ha az megvan onnantól kezdve már nyert ügyed van, habár ez bizony woodoo :)
Helló, még egyszer átnéztem,
RewriteRule ^.*$ z/index.php?l=stand&t=stand&p=stand [L,QSA]
Így működik (QSA nélkül, ahogy írtad, sajna nem), de az admin oldalt nem adja be, hanem azt is átírja... Mivel nem igazán értem, hogy a magyar szöveg mit akar kifejezni, így kicsit belemélyedek az angol eredetibe is.
Ha továbbjutok a megoldásban, azt leírom ide, hogy másnak is segítsen, ha ugyanez a probléma merülne fel nála.
Köszi a segítséget, rrd! Már kezdtem feladni, bár most sem tuti... Kicsit olyannak tűnik, mintha az [L]-ek ellenére továbbmenne, és átírná a default oldalra, amikor én az admint kérem... =(
Jah, igen, és ez a sor
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/?$ z/index.php?l=$1&t=$2&p=$3 [S=9]
Úgyhogy egyre kevésbé tudom, hogy most mi is történik itten...
A magam részéről azt a