Autor Zpráva
quatzael
Profil
Pokouším se zaimplementovat .htaccess, protože bez toho se do budoucna nedá na mých stránkách nic pořádnýho dělat. Ale vůbec tomu nerozumím, nemám s tím žádný zkušenosti, nikde není pořádný návod.

Potřebuju "podstrčit" stránku z původní url adresy na soubor mimo doménu.
soubor .htaccess mám ve stejným adresáři jako je moje-domena.cz a inc. Zkoušel jsem redirect. Ten funguje, ale RewriteRule nějak ne..

RewriteEngine on
RewriteRule moje-domena\.cz/nejaka-podstranka/index\.php inc/jina-podstranka/index.php



uvědomil jsem si, že vlastně žádný index.php nemám v tý podsložce "nejaka-podstranka"
(moje-domena\.cz/nejaka-podstranka/index\.php)

ale házelo to 403

a když jsem to přepsal na:
RewriteEngine on
RewriteRule moje-domena\.cz/nejaka-podstranka/ inc/jina-podstranka/index.php

tak to hází 404..
Taps
Profil
quatzael:
nikde není pořádný návod
a co toto http://mike.treba.cz/mod_rewrite-a-hezke-url/ ?
quatzael
Profil
Taps:
A jak to tam z toho mám vyčíst? Vždyť tam není nic o tom jak správně zadat cestu k souboru mimo doménovou podsložku..


A šlo by nějak udělat jeden univerzální příkaz, že bych měl ve složce "inc" stejnou strukturu jako ve složce "moje-domena.cz" a ten RewriteRule by jen zaměnil "moje-domena.cz" za "inc"?
Je na to nějaký regulární výraz?
Kubo2
Profil
quatzael:
že bych měl ve složce "inc" stejnou strukturu jako ve složce "moje-domena.cz"
To myslíš ako? Adresár moje-domena.cz/ je root (t.j. /)? A ty chceš vytvoriť štruktúru nie od skutočného rootu, ale až od adresára moje-domena.cz/inc/?
Chápem to tak, že /inc/ je má byť v podstate nejaká atrapa rootu. Samozrejme, že sa to dá urobiť, ale je to blbosť.

# .htaccess umiestnený v roote
RewriteEngine On
RewriteBase /inc/
RewriteCond /inc%{REQUEST_URI} -f [OR]
RewriteCond /inc%{REQUEST_URI} -d
RewriteRule ^(.*)$ $1 [L]

Predpokladám správne fungovanie, ale netestoval som to, bohužiaľ na to teraz nemám čas, píšem si šablónovací systém a sem som mrkol iba tak zbežne.
quatzael
Profil
Kubo2:
Chápem to tak, že /inc/ je má byť v podstate nejaká atrapa rootu.
Nene.
Nedělám to jen tak pro srandu králíkům. Jde o zabezpečení samozřejmě. Aby ta složka /inc/ byla mimo složku "moje-domena.cz"..

Já nevím kterej je root adresář. Nikde jsem na netu nenašel, kde by to bylo přesně definovaný..
Předpokládám, že to je úplně ten nejsvrchnější adresář, ve kterém je mimo jiné i "moje-domena.cz"
No a chci, aby vedle tý složky "moje-domena.cz" byla i složka "inc", ve který bych měl stejnou strukturu podsložek, takže aby místo z "moje-domena.cz/podsložka-abc/" to server načítal z "inc/podsložka-abc/".
Davex
Profil
quatzael:
Pomocí mod_rewrite nejdou přepisovat adresy někam mimo kořen webu pokud do toho nezamontuješ ještě aliasy nebo symlinky. Co má být skryto umísti mimo kořen webu a veřejně přístupné soubory umísti do veřejně přístupného adresáře.
quatzael
Profil
Davex:
Já to právě chci, aby to bylo skrytý. Předpokládal jsem, že je to běžná praxe.. Jak se teda nejběžněji řeší to, že to má být skryto.. Myslím u velkých aplikací? Nejdou tam teda nějak zamotat ty aliasy a symlinky?
Kubo2
Profil
quatzael:
Bežne sa to rieši pridaním
Order Deny,Allow
Deny from all
do .htaccessu skrývaného adresára.
Davex
Profil
quatzael:
Já to právě chci, aby to bylo skrytý.
Proč to tedy chceš přes mod_rewrite zase zpřístupnit, když to má být skryté? Z veřejně přístupného PHP skriptu můžeš skryté skripty includovat, tak moc nechápu jaký je tvůj záměr a proč to chceš řešit přepisem adres.
quatzael
Profil
Kubo2, Davex:
No asi jsem význam .htaccess špatně pochopil..
Takže všechny zabezpečený stránky to mají tak, že v doménových složkách mají jen soubory index.php, ve kterých je pouze příkaz include na nějaký script mimo doménovou složku (případně ještě příkaz session)?

Tak to s tím už moc dělat nemusím..
Ale docela by se mi hodilo, když spustím celej ten můj webovej projekt, a budu tam mít ještě nějaký provizorní podstránky, abych mohl pracovat na jejich dokončení a zobrazovala se mi moje rozdělaná práce, kdežto uživatelům, aby se zobrazovala pořád ta provizorní podstránka..
Jde to přesměrování (RewriteRule) omezit jen na určitou IP adresu?
Davex
Profil
quatzael:
Takže všechny zabezpečený stránky to mají tak, že v doménových složkách mají jen soubory index.php, ve kterých je pouze příkaz include na nějaký script mimo doménovou složku (případně ještě příkaz session)?
Všechny to tak nemají a není to moc zásadní věc pro zvýšení zabezpečení. V některých situacích to pomůže, ale přesunem skriptů mimo veřejně dostupný prostor se zabezpečení celé nevyřeší.

abych mohl pracovat na jejich dokončení a zobrazovala se mi moje rozdělaná práce
Nejlepší je nikdy nepracovat na ostré verzi webu a vývojové prostředí mít zcela odděleně.
quatzael
Profil
Davex:
Nejlepší je nikdy nepracovat na ostré verzi webu a vývojové prostředí mít zcela odděleně.
Stáhl jsem si XAMPP, ale funguje to tak jakože to moc nefunguje. Zapojení databáze se mi taky moc nepovedlo.. Navíc se ten XAMPP může chovat jinak než originál a když si to všechno vyladím na XAMPP a nahraju to na server, tak můžu být překvapenej, že to bude dělat něco jinýho..
Proč je tak špatný pracovat na ostrý verzi, když se to ošetří tím .htaccess?


Davex:
ale přesunem skriptů mimo veřejně dostupný prostor se zabezpečení celé nevyřeší.
Já jsem měl za to, že je to naprostá nutnost přesouvat. Je k tomu snad nějaká alternativa, která to umožňuje nechat ve veřejně přístupné složce? Nějaký šifrování?
Davex
Profil
quatzael:
Proč je tak špatný pracovat na ostrý verzi, když se to ošetří tím .htaccess?
Protože můžeš něco rozbít a způsobit nefunkčnost webu.

Já jsem měl za to, že je to naprostá nutnost přesouvat.
Nutnost to není. Přesunutí mimo veřejně přístupnou oblast pomůže jen ve zvláštních případech, kdy se třeba zblázní webserver a místo spuštění PHP skriptu odešle zdrojový kód nebo když je programátor prase a umožní, aby skripty mohly způsobit nějakou škodu při samostatném spuštění.

Je k tomu snad nějaká alternativa, která to umožňuje nechat ve veřejně přístupné složce?
Ano. Viz [#8] Kubo2.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0