Autor | Zpráva | ||
---|---|---|---|
ludvalb Profil |
#1 · Zasláno: 8. 5. 2014, 19:55:30 · Upravil/a: ludvalb
Zdárek,
mám problém se kterým si nevím rady. potřeboval bych aby se po zadání url adresy www.neco.cz presmerovala na www.neco.cz/index.php?page=uvod a aby se to rovnou tvarilo jako www.neco.cz/uvod/
stránka nemusí být index.php Jde mi hlavně o to, že potřebuji získat $_GET['page']; na začátku stránky. ději za pomoc. zkoušel jsem varianty z http://mike.treba.cz/mod_rewrite-a-hezke-url/ ale došel jsem jen do faze hezkych adres jako třeba www.neco.cz/postranka což vlastně je www.neco.cz/index.php?page=podstranka
zde je kod který jsem použil. RewriteEngine on RewriteRule ^index.php http://www.neco.cz/hlavni.php?page=uvod [R=301] ---- toto funguje pouze pokud zadám www.neco.cz/index.php RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^/]+)/?$ ?page=$1 funguje mi i když zadám www.neco.cz/uvod ale nedaří se ni nato přesměrovat.
|
||
Davex Profil |
Asi hledáš něco takového?
Mod_rewrite - Změna dynamických adres na statické |
||
ludvalb Profil |
#3 · Zasláno: 9. 5. 2014, 20:37:24
s tím si dokážu poradit, to mi i tak nějak funguje. Potřebuji, ale aby mi to fungovalo i pokud zadám pouze
www.neco.cz a nemusel jsem zadávat www.neco.cz/index.php .
Pokud zadám www.neco.cz/index.php , pak vše běží jak má. i se mi vztváředí hezké url www.neco.cz/podtranka
pokud zadám ručně nebo pomocí odkazu www.neco.cz/postranka pak je také vše v pořádku.
Potřebuji vyřešit jen první přístup na doménu. Mám to na vlastním hostingu s apachem, možná mám jen něco špatně v http.conf |
||
Davex Profil |
#4 · Zasláno: 9. 5. 2014, 21:24:31
A problém je v čem? Na úvodní stránce
www.neco.cz/ zobrazit obsah jako na www.neco.cz/index.php?page=uvod ? To stačí ošetřit v PHP skriptu a není potřeba nikam přesměrovávat.
|
||
ludvalb Profil |
#5 · Zasláno: 9. 5. 2014, 22:22:28
jde o to, že se mi nevytvoří proměnná page a pak mám chyby v obsahu (používám register_globals=on), pak dále mám, že pokud $page=""; tak se přiřadí $page="uvod"; a vloží obsah stránky uvod.
if ((string)$_GET["page"]!='') $page=$_GET["page"]; else $page ="uvod"; if (is_file("./".$page.".htm")): include $page.".htm"; elseif (is_file("./".$page.".php")): include $page.".php"; else: include "notfound.php"; endif; problém je ale v tom, že $page se vytvoří až po proběhnutí if ((string)$_GET["page"]!='') proto jsem to chtěl vyřešit přesměrováním a získat tak $_GET["page"] |
||
Davex Profil |
ludvalb:
„problém je ale v tom, že $page se vytvoří až po proběhnutí if ((string)$_GET["page"]!='')“ A ten kód upravit nemůžeš? Jinak tento kód může být celkem slušná bezpečností díra a na úvod doporučuji alespoň základní zabezpečení. <?php if (isset($_GET["page"]) && is_string($_GET["page"])) { $page = basename(preg_replace("~[\\x00-\\x1f]~u", "", $_GET["page"])); } else { $page = ""; } if ($page == "" ) { $page = "uvod"; } elseif (strlen($page) > 240) { $page = "notfound"; } |
||
ludvalb Profil |
#7 · Zasláno: 10. 5. 2014, 21:46:31
Tvůj kod mi sice nefungoval, i když má smysl, ale modifikoval jsem svůj kod a vše již běží skvěle.
if (isset($_GET["page"]) && is_string($_GET["page"])){ $page = basename(preg_replace("~[\\x00-\\x1f]~u", "", $_GET["page"])); }else{ $page = basename(preg_replace("~[\\x00-\\x1f]~u", "", "uvod")); } if (is_file("./".$page.".htm")): include $page.".htm"; elseif (is_file("./".$page.".php")): include $page.".php"; else: include "notfound.php"; endif; děkuji za pomoc s řešením tohoto problému. |
||
Časová prodleva: 10 let
|
0