Autor | Zpráva | ||
---|---|---|---|
Kubík M. Profil * |
#1 · Zasláno: 15. 2. 2012, 20:55:18
Zdravim,
rád bych, kdyby mi někdo poradil, jak vyřešit menší problém. Potřebuji, abych na localhostu mohl vyvíjet stejnou verzi jako budu nahrávat na ostrý server. Jediný problém jsem ale nalezl v souboru .htaccess Nejdříve ještě vysvětlím, jak to vypadá u mě: Mám standardní WAMPSERVER2 uložen v C:// - wamp / www. Ale ve složce www mám ještě několik podsložek, které jsou jako jednotlivé projekty, ke kterým přistupuji tedy pomocí podsložek: localhost/projekt1/ localhost/projekt2/ apod... Doufám, že je jasné co tím myslím... Jeho podoba je takováto: RewriteEngine on DirectoryIndex index.php RewriteRule ^menu/(.*)/$ index.php?menu=$1 Funguje sice správně a plní to co má, jenže... Na ostatní stránky odkazuji pomocí standardního odkazu ve formátu: <p>Chci jít na <a href="/menu/kontakt/">kontakt</a>. Ovšem problém nastane tehdy, když kliknu na odkaz například z úvodní stránky. Rewrite sice přepíše adresu a poslal by mi soubor kontakt.php, ale nenajde cestu, protože se /menu/kontakt/ bere od kořenového souboru, nikoliv od podsložky, kde mám můj projekt. zkoušel jsem i metodu <p>Chci jít na <a href="menu/kontakt/">kontakt</a>. tudiž vzniká localhost/project/menu/kontakt/menu/uvod/menu/dalsi-stranka/... apod... Nenapadá Vás nějaké řešení krom toho mít vždy na localhostu pouze jeden soubor nebo to mapovat přes hosts na falešené domény? Díky, snad jste mě pochopili. |
||
Davex Profil |
#2 · Zasláno: 15. 2. 2012, 21:43:47
Nejsnadnější řešení je vytvořit si pro každý projekt samostatnou subdoménu a VirtualHost (to asi myslíš tou falešnou doménou).
Jiná řešení jsou zbytečně komlikovaná a mohla by přinášet komplikace po nasazení odladěných skriptů do provozu (třeba HTML element <base> ).
|
||
Kubík M. Profil * |
#3 · Zasláno: 15. 2. 2012, 21:54:46
Nebo mě napadlo prostě ke všem odkazům dávat ještě /project/menu/kontakt a nebo misto toho proměnnou, kterou v hlavním souboru případně zrušit, co myslíš?
$path = "/project"; echo("<a href='$path/menu/uvod'>"); a při nahrání na ostrý server prostě jen proměnnou $path nastavit na prázdnou hodnotu. |
||
Davex Profil |
#4 · Zasláno: 15. 2. 2012, 22:16:13
Kubík M.:
Ano. Skript by neměl být závislý na umístění v adresářové struktuře a měl by být schopen zjistit si umístění sám - v PHP například z proměnné $_SERVER['PHP_SELF'] . Stačí si vytvořit konfigurační skript, který nastaví konstantu dostupnou ve všech skriptech. To ale s konfigurací serveru nesouvisí, takže jsem se o tom nezmiňoval.
|
||
Kubík M. Profil * |
#5 · Zasláno: 15. 2. 2012, 22:21:29
No pokud budu předpokládat, že výjdu z .htaccess je nemožné se dostat dál jak na /menu/stranka/ např. na /menu/stranka/jeste-neco/. Takže by $path = "/project"; mělo stačit, ale ted je otazka, co kdyz dal se budou delat veci jako mazani, apod. $_SERVER['PHP_SELF'] mi to neobstará...
|
||
Davex Profil |
#6 · Zasláno: 15. 2. 2012, 22:24:28
Kubík M.:
To je záležitost aplikační logiky. Umístění skriptu v adresáři je absolutně nepodstatný detail. |
||
Kubík M. Profil * |
#7 · Zasláno: 15. 2. 2012, 22:26:04
Nerozumím.
Přejdu-li k řešení - měla by stačit daná proměnná s případně přidáním ../../../ ? |
||
Davex Profil |
#8 · Zasláno: 15. 2. 2012, 23:29:53
V té proměnné je jméno volaného skriptu s cestou od kořene webu. Samotná cesta se dá vytáhnout funkcí
dirname() .
|
||
Kubík M. Profil * |
#9 · Zasláno: 16. 2. 2012, 08:03:01
No jasně, staré zlaté dirname(). To by mohlo jít. :-) Dík
|
||
Časová prodleva: 12 let
|
0