Autor | Zpráva | ||
---|---|---|---|
Matyáš Profil |
Dobrý den,
potřeboval bych poradit s manipulací s URL adresou. Ve svém projektu bych potřeboval následující věc. Vysvětlím ji na jednoduchém příkladu, abych přítomné nezatěžoval zbytečnými detaily a úskalími mého projektu. Dejme tomu, že můj projekt má adresu domena.cz. Potřeboval bych toto: když uživatel zadá adresu domena.cz/en/index.php, zobrazí se mu stránka index.php, která je umístěna v kořenovém adresáři domena.cz, pouze se tento soubor spustí jakoby s parametrem něco="en". Obdobně i s dalšími soubory: domena.cz/en/stranka.php, nebo domena.cz/cs/index.php spustí totožný soubor index.php s nějakým parametrem něco="cs". Zkrátka abych měl na webu jednu sadu souborů (dejme tomu index.php, stranka.php) a žádné další složky. Zmíněné složky en a cs nebudou fyzicky existovat, budou jakoby nahrazovat GET parametry. Vím sice, jak by se toto realizovalo, pokud by ony parametry cs a en byly na konci, ale nevím už, jak to provést v tomto případě. Na závěr zopakuji, že mým cílem není multijazyčný web, pouze jsem to ukázal na tomto jednoduchém příkladu. Složky cs a en jsou smyšlené. Dá se toto nějak realizovat, aniž bych celý web kopíroval do složek (což je prakticky nerealizovatelné, podložek bude velké množství)? Předem děkuji všem za reakci! |
||
nodo Profil |
#2 · Zasláno: 22. 6. 2017, 21:36:30
Matyáš:
Toto je hrubý výpis z môjho kódu, malo by ťa to nakopnúť. Treba zabezpečiť proti vstupom užívateľa $vp = isset($_GET["p"]) ? $_GET["p"] : ''; $adresa = explode("/", $vp); echo $adresa[0]; echo "<br>".$adresa[1]; a do súboru .htaccess zapíš RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?p=$1 [QSA,L] |
||
Matyáš Profil |
nodo:
Děkuji Vám za Vaši reakci! Zkoušel jsem a funguje to, ovšem ne přímo tak, jak jsem potřeboval. Když například použiji adresu domena.cz/en/jablko.php, tak se mi stejně objeví domena.cz/en/index.php s parametrem $adresa[0]="jablko". Já bych potřeboval takový .htaccess , který přesměrovává univerzálně na všechny soubory. Pokusím se být více názorný:
domena.cz/ab/index.php přesměrovat na domena.cz/index.php s parametrem parametr="ab" domena.cz/cd/index.php přesměrovat na domena.cz/index.php s parametrem parametr="cd" domena.cz/ef/hruska.php přesměrovat na domena.cz/hruska.php s parametrem parametr="ef" domena.cz/gh/hruska.php přesměrovat na domena.cz/hruska.php s parametrem parametr="gh" domena.cz/ij/jablko.php přesměrovat na domena.cz/jablko.php s parametrem parametr="ij" domena.cz/kl/jablko.php přesměrovat na domena.cz/jablko.php s parametrem parametr="kl" |
||
Kajman Profil |
#4 · Zasláno: 23. 6. 2017, 08:40:03
Ale v tom index.php se přeci můžete jednoduše podívat na poslední prvek pole a pokud je to php, otestovat jeho existenci na disku a includovat ho, jinak pokračovat v provádění index.php
Osobně nevidím žádný přínos adresy domena.cz/ab/index.php vůči domena.cz/index.php?parametr=ab Přínosem přepisu bývá to, že můžete mít adresy nezávislé na technologii - tedy že tam žádné .php v adrese nebude. Ale jde přepisovat i tak, jak popisujete RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)/([^/]*\.php)$ $2?parametr=$1 [QSA,L] |
||
Matyáš Profil |
#5 · Zasláno: 23. 6. 2017, 17:48:00
Kajman:
Děkuji za odpověď. Skript funguje výborně. Osobně necítím averzi k php GET parametrům v URL, sám je často používám, ovšem, já potřebuji mít ve svém projektu falešné podsložky zákazníků, jejichž adresy jsou ve formě domena.cz/zakaznik/mrkev.php, poněkud přijatelnější. |
||
Tomášeek Profil |
#6 · Zasláno: 23. 6. 2017, 20:56:51
Matyáš:
Profily jsou veřejné (tedy mohu si zobrazit profil jak=hokoliv zákazníka, jehož login znám) nebo jen svůj? Pokud jen svůj (třeba k editaci), pak v URL nic být nemusí. |
||
Časová prodleva: 3 dny
|
|||
Matyáš Profil |
Tomášeek:
právě že profily budou veřejné. Ono se v podstatě nebude ani tak jednat o profily, ale spíše o webové portály. Proto usiluji o co nejlepší vzhled adresy. Ještě bych si dovolil položit jednu otázku, a sice jak by tento kód vypadal v souboru web.config pro IIS? |
||
Časová prodleva: 7 dní
|
|||
Matyáš Profil |
#8 · Zasláno: 3. 7. 2017, 19:26:50
Dobrý den,
ještě bych potřeboval poradit s drobnou úpravou souboru .htaccess. Potřebuji, aby na kořenové adrese domena.cz[b][/b] byl obecný web projektu, takže dejme tomu web ze složky /uvod/ a při použití parametru se zobrazil web tvořený soubory ze složky /web/. Dá se to nějak zařídit? Pokoušel jsem se to googlit, ale moc jsem neuspěl. Nenašel jsem nějaký návod, který by mi pomohl, nebo mě někam popostrčil. |
||
Časová prodleva: 21 dní
|
|||
Matyáš Profil |
#9 · Zasláno: 24. 7. 2017, 17:18:11
Kajman:
Přece jen jsem ve Vašem skriptu našel jednu nesrovnalost. A sice když zadám adresu domena.cz/ab do řádky vyhledávače, server vrací stránku 404. Funguje to pouze, pokud uvedu celou adresu, tedy i s názvem souboru domena.cz/ab/index.xxx. Mohl byste mi naposledy poradit, jak skript pozměnit, aby fungoval i pro tyto případy? Děkuji! P.S.: jistě uznáte, že uvádět indexovou stránku i s názvem souboru je poněkud nepraktické... |
||
Kajman Profil |
#10 · Zasláno: 25. 7. 2017, 07:57:18
Matyáš:
Mně to spíš přijde jako nesrovnalost v otázce a použití. Zkuste přidat RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^/]*)/?$ index.php?parametr=$1 [QSA,L] |
||
Časová prodleva: 6 let
|
0