Autor | Zpráva | ||
---|---|---|---|
ctverecek Profil |
#1 · Zasláno: 14. 2. 2009, 22:24:06
Zdravim, mam tento kód:
<div id="levypanel"> <ul id="menu"> <li><a href="uvod.html">Uvod</a></li> <li><a href="board.html">BOARD</a></li> <li><a href="reference.html">REFERENCE</a></li> </ul> </div> <div id="hlavnipanel"> <? if(!isset($_GET['id'])) $_GET['id']=uvod; switch ($_GET['id']){ case 'uvod': require "./includes/uvod.php"; break; case 'board': require "./includes/board.php"; break; case 'reference': require "./includes/reference.php"; break; default : require "./includes/uvod.php"; break;} ?> </div> Po uploadu na server mi pak ale nefunguje...pokaždé mi to vyhodí hlášku ze stranka neexistuje :-(. MOD REWRITE mam nastaven takto: ErrorDocument 404 /chybovka.html RewriteEngine on RewriteBase / RewriteRule ^web/(.*)\.html$ index.php?id=$1 [L] Mam takove tuseni jestli se nemusi do pravidla rewritu pripsat nova slozka, jelikoz vyse zminene stranky jsou v ROOT/web/administrator. Ale pravidlo RewriteRule ^web/admistrator(.*)\.html$ index.php?id=$1 [L][ nefunguje |
||
AM_ Profil |
#2 · Zasláno: 14. 2. 2009, 22:32:14
Záleží, kde je ten index.php; jestli ve web, pak máš nejlepší celý .htaccess přesunout do složky web a neřešit tam relativní cesty. Jestli v rootu, nevím, proč to nefunguje.
|
||
ctverecek Profil |
#3 · Zasláno: 14. 2. 2009, 22:56:13 · Upravil/a: ctverecek
Bohužel muj hosting mi neumoznuje umistit .htaccess jinam nez do ROOT.
zkusil jsem RewriteEngine on RewriteBase / RewriteRule ^web/(.*)\.html$ index.php?id=$1 [L] RewriteRule ^web/administrator/(.*)\.html$ index.php?id=$1 [L] a taky nic uz vazne nevim kde je chyba |
||
ninja Profil |
#4 · Zasláno: 14. 2. 2009, 23:18:53
RewriteRule ^web/(.*)\.html$ /web/administrator/index.php?id=$1 [L] Ten index.php snad mate v adresari, ne? |
||
ctverecek Profil |
#5 · Zasláno: 14. 2. 2009, 23:23:26
RewriteEngine on
RewriteBase / RewriteRule ^web/(.*)\.html$ index.php?id=$1 [L] RewriteRule ^web/(.*)\.html$ /web/administrator/index.php?id=$1 [L] nefunguje |
||
ctverecek Profil |
#6 · Zasláno: 15. 2. 2009, 02:30:01
Tak uz vim kde je chyba...potrebuju jen spojit tyto dvě rewrite pravdila:
ErrorDocument 404 /chybovka.html RewriteEngine on RewriteBase / RewriteRule ^web/(.*)\.html$ index.php?id=$1 RewriteRule ^web/(.*)\.html$ admin.php?idcko=$1 [L] jestli tedy nejaka logicka spojka existuje, zkousel jsem [OR] a to nejde? |
||
joe Profil |
#7 · Zasláno: 15. 2. 2009, 02:43:44
ctverecek
Zkusil bych to takhle. RewriteRule ^web/(.*)\.html$ admin.php?idcko=$1 [L] RewriteRule ^web/administrator/(.*)\.html$ admin.php?idcko=$1 [L] |
||
ctverecek Profil |
#8 · Zasláno: 15. 2. 2009, 02:49:35 · Upravil/a: ctverecek
Nakonec jsem dal admin.php taky do ROOT takze FTP struktura vypada takhle:
joe tvůj zapis taky nefunguje :-( funguje vzdy to prvni pravidlo...potreboval bych se nejak jen spojit |
||
AM_ Profil |
#9 · Zasláno: 15. 2. 2009, 10:10:39
ne, nepotřebuješ je spojit, stačí je otočit, protože první pravidlo odpovídá mimo jiné stejné možině adres, jako to druhé. jako bys napsal (if $a>0 then .... elseif $a == 5 ... endif) tak se taky ke druhé větvi nikdy nedostaneš.
Divil bych se, kdyby ti hosting nepovoloval .htaccess v jiných adresářích. Jak se to projevuje? když ho tam nahraješ, tak zmizí? musíš si nastavit zobrazení skrytých FTP souborů ;) |
||
ctverecek Profil |
#10 · Zasláno: 15. 2. 2009, 12:01:55 · Upravil/a: ctverecek
„ne, nepotřebuješ je spojit, stačí je otočit, protože první pravidlo odpovídá mimo jiné stejné možině adres, jako to druhé. jako bys napsal (if $a>0 then .... elseif $a == 5 ... endif) tak se taky ke druhé větvi nikdy nedostaneš.“
„Divil bych se, kdyby ti hosting nepovoloval .htaccess v jiných adresářích. Jak se to projevuje? když ho tam nahraješ, tak zmizí? musíš si nastavit zobrazení skrytých FTP souborů ;)“ Když jsem je takto otočil: RewriteEngine on RewriteBase / RewriteRule ^web/(.*)\.html$ admin.php?idcko=$1 [L] RewriteRule ^web/(.*)\.html$ index.php?id=$1 [L] Tak to funguje jen na admin.php do index.php se šoupají věci z adminu. Koukni sem a pak sem a pochopis jak to zlobí .htaccess si mohu editovat jen prez webove rozhrani meho hostingu a pokud .htaccess vytvorim nove a nahraju ho do nejake slozky tak:Internal Server Error |
||
AM_ Profil |
#11 · Zasláno: 15. 2. 2009, 13:10:43 · Upravil/a: AM_
Aha, myslel jsem otočit joeovo řešení -
RewriteRule ^web/administrator/(.*)\.html$ web/admin.php?idcko=$1 [L] RewriteRule ^web/(.*)\.html$ web/index.php?idcko=$1 [L] vždyť se na to, cos teďka napsal, podívej: máš tam dvě úplně stejné podmínky, jak se má apache rozhodnout, kterou použít? /edit: joe tam měl taky chybku, samozřejmě ke druhému pravidlu patří index.php. |
||
ctverecek Profil |
#12 · Zasláno: 15. 2. 2009, 14:02:22
OK nakonec jsem to tedy udělal podle JOE a AM_ funguje to takže díky ;-)! Jestli jsem to však správně pochopil tak nemůžu nastavit dvě pravidla, pro dva soubory v jedné složce?
|
||
joe Profil |
#13 · Zasláno: 15. 2. 2009, 14:50:24
A jo, já to kopíroval jen z jednoho řádku. A administrator musí byt před tím, protože jinak by to pravidlo přesměrovalo na index a nic dalšího by se neprovádělo, takže jak napsal AM_.
ctverecek „Jestli jsem to však správně pochopil tak nemůžu nastavit dvě pravidla, pro dva soubory v jedné složce?“ Můžeš :-) Ale musí to být správně. Můžeš například napsat RewriteRule ^web/([a-zA-Z])\.html$ web/index.php?nazev=$1 [L] RewriteRule ^web/([0-9])\.html$ web/index.php?idcko=$1 [L] Je to jen příklad. Obě přesměrují na index.php. To první do parametru nazev v url přídá název stránky pokud bude v url například xyz.html a to druhé přidá parametr idcko, když bude v url třeba 123.html |
||
AM_ Profil |
#14 · Zasláno: 15. 2. 2009, 18:31:50 · Upravil/a: AM_
ctverecek
„ Jestli jsem to však správně pochopil tak nemůžu nastavit dvě pravidla, pro dva soubory v jedné složce?“ Především jsi se dopustil základní chyby proti principu algoritmů - tvůj algoritmus nesplňoval jednoznačnost, nejen stroj, ale ani člověk neměl z tvého zápisu šanci zjistit, v jakém případě se má přesměrovat na index.php a v jakém na admin.php. Pokud jsi si myslel, že by to šlo na obojí najednou, tak prostě nejde. Principielně jde tedy o to, že už v .htaccess musíš rozlišit, co se má směrovat. |
||
Časová prodleva: 15 let
|
0