Autor Zpráva
rexi
Profil *
Ahojte, mám menší problém.

Kdyz vše běží v kořenovém adresáři tak žádný problmém.
Nicméně teď to testuji v adresáři a narazil jsem na problem. Pres htaccess mě to předává adresu i s tim daným adresářem coz me nevyhovuje. Potrebuju predat jen adresu ktera je "za danou slozkou". Hnedka vysvětlím.

Mám tento htaccess.
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f


RewriteRule ^([^.]+) /index.php?url=$1 [NC,L]



Ten me preda celou adresu hlavnimu skriptu ktery jiz pak zavola danou stranku.

Například: domena.cz/registrace/ -> zavolá stránku s registrací
domena.cz/adresar/registrace/ ->nezavola nic, protože stránka adresar/registrace/ neexistuje. Chci aby to předalo jen registrace/


Napadlo me udělat "prunik dvou stringů.

Například mám definovanou adresu v konstante ADRESA. Např. http://domena.cz/adresar/ a kdyz nekdo načte stránku a zavolá např adresar/registrace/ tak aby se to zpracovalo jen na registrace/. Ale nevím jak nato jednoduše. Budu rád za jakékoli nápady.

Jestli to půjde řešit přes htaccess budu jen rád. Nicméně musí to být univerzální, musí to jít použit všude, nemíním pokaždé upravovat htaccess. Upravuju jedině config.php kde je i ta konstanta s adresou apodobně.

Děkuji všem za strávený čas nad mým problémem.
Aesir
Profil
rexi:
Nestačilo by posunout document root do domena.cz/adresar?
rexi
Profil *
v .htaccess ?? Jak jsem říkal když to bude univerzálně pak ano. Je potřeba to často přenášet takže měnit pořád htaccess nemíním.

Napiš konkrétně jak si to myslel.
Aesir
Profil
rexi:
v .htaccess ??
To samozřejmě nejde.

Je potřeba to často přenášet takže měnit pořád htaccess nemíním.
Document root musíte nastavit tak jako tak, když často přenášíte.

Napiš konkrétně jak si to myslel.
Myslel jsem to tak, že document root bude ukazovat na adresář domena.cz/adresar, takže se nebude v adrese vůbec vyskytovat. Otázkou samozřejmě zůstává k čemu to potřebujete. Působí to na mě tak, že máte aplikaci vnořenou do nějakého adresáře a chcete se toho zbavit, což můžete ideálně udělat posunutím document rootu, popřípadě nějakým redirectem, rewritem, apod.
rexi
Profil *
To samozřejmě nejde.
Bohužel používáš nešťastný výraz document root, což také znamená DocumentRoot v htaccess. To mě zmátlo, proto jsem se tak blbě zeptal.

Předpokladám že document root si mam představit jako adresu uloženou např v nějaké proměnné či konstantě. Jestli je to tak tak jsi asi nečetl celý můj problém, toto mám již dávno udělané. Potřebuju ale udělat rozdíl mezi "document rootem" a volanou adresou.

Je dobré to tedy udělat nějakou funkcí, tím způsobem ?? Bohužel nevím o funkci která vrátí jen část která není společná pro oba stringy.

Aby výsledek vypadal nějak takto:

$adresa_webu = "http://domena.cz/adresar/";
$volana_adresa = "adresar/registrace/";

$vysledek = rozdil_adres($volana_adresa,$adresa_webu);

echo $vysledek; // registrace/


Působí to na mě tak, že máte aplikaci vnořenou do nějakého adresáře a chcete se toho zbavit,...
Na mě to působí tak že jsi buď neporozuměl mé specifikaci chyby, nebo jsi to nečetl celé. Píše se tam jasně a stručně že : „Například mám definovanou adresu v konstante ADRESA. Např. http://domena.cz/adresar/ a kdyz nekdo načte stránku a zavolá např adresar/registrace/ tak aby se to zpracovalo jen na registrace/.
Samozřejmě máš pravdu, ale píšeš to tím stylem jako kdybych to zde ani neuvedl.



Tvá odpověď na mou reakci ať to píšeš konkrétně je ještě obecnější než je zdrávo.
Píšeš o redirectech a rewritech. Buď konkrétní. Je mě naprosto jasné že pomocí tohoto to lze, ale nevím jak přesně. Kdybych věděl jak pomocí tohoto to udělat tak to už dávno mám. Nicméně řešit tento problém přes htaccess se mně moc nezdá jako efektivní. Adresu zpracovávám přes php skript, byl bych také rád kdyby i toto se dělo přes php.
rexi
Profil *
Spíše toto:
$adresa_webu = "adresar/";
$volana_adresa = "adresar/registrace/";

$vysledek = rozdil_adres($volana_adresa,$adresa_webu);

echo $vysledek; // registrace/


Prostě rozdíl dvou stringů.
Aesir
Profil
rexi:
Bohužel používáš nešťastný výraz document root, což také znamená DocumentRoot v htaccess.
Myslím tím prostě document root. Pokud vím, tak v htaccess měnit nejde.

Předpokladám že document root si mam představit jako adresu uloženou např v nějaké proměnné či konstantě.
V konfiguraci Apache, je to prostě kořenový adresář webu.

Potřebuju ale udělat rozdíl mezi "document rootem" a volanou adresou.
Nějak takhle?
$adresa_webu = "adresar/";
$volana_adresa = "adresar/registrace/";
if(0 === strpos($volana_adresa, $adresa_webu)) {

}


Nebo ten document root posunout, jak jsem radil :)

Píšeš o redirectech a rewritech. Buď konkrétní.
RewriteEngine on
RewriteRule ^/$ /web/
rexi
Profil *
Žádná z tvých rad mně moc nepomohla. Spíše mě nasměrovala do htaccess. Problém je v celku jednoduchý. Stačilo lehce upravit.
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f


RewriteRule ^([^.]+) /index.php?url=$1 [NC,L]


Teď mě to do parametru nedává názvy složek apod. Nicméně děkuji za pomoc.
Aesir
Profil
rexi:
Odstraněním toho lomítka přece neuděláte nic jiného, než to, že index.php adresujete relativně a nikoliv absolutně. Jak to může řešit váš problém
Potřebuju ale udělat rozdíl mezi "document rootem" a volanou adresou.“ ?

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: