Autor Zpráva
sitole
Profil
Ahoj, když jsem brouzdal po internetu dostal jsem celkem zajímavý nápad. Jde pomocí souboru .htaccess nastavit "hosting" tak, aby obsah, který se bude zobrazovat na stránce například www.x.cz/clanky/kocka-snedla-psa zobrazoval na stránce www.x.cz/kocka-snedla-psa? Nejspíše je to takový vysněná funkce, ale proč se nezeptat.
Předem děkuji. :) Případně jak jinak to udělat?
lionel messi
Profil
sitole:
Nejspíše je to takový vysněná funkce
Tejto časti súvetia veru nerozumiem. Pokiaľ narážaš na to, že to zrejme nejde spraviť, výrazne podceňuješ silu .htaccess.

Ide o jednoduché podstrčenie obsahu:

RewriteEngine On #zapne mod_rewrite
RewriteRule kocka-snedla-psa /clanky/kocka-snedla-psa #podstrčí

Všetko sa dá univerzálne zapísať pomocou regulárnych výrazov:

RewriteEngine On #zapne mod_rewrite
RewriteRule (.*) /clanky/$1 #podstrčí

Druhý zápis hovorí, že na adrese www.x.cz/ľubovoľný počet ľubovoľných znakov sa má zobrazovať obsah z www.x.cz/clanky/zadaná adresa.

Na jednoduchý úvod do problematiky mod_rewrite odporúčam článok z tvojho obľúbeného zdroja Mod_rewrite. Ďalšie informácie nájdeš v oficiálnej dokumentácii Apache, prípadne pri troške snahy a hľadania aj v češtine (zväčša neúplné, ale užitočné návody).
juriad
Profil
Ano jde. Ale je to potřeba udělat opatrně. Univerzální přepis podle lionela messiho způsobí problémy.
# zobrazí stránku jakoby s /clanky/
# pozor toto nestačí - to by přestaly fungovat všechny obrázky, css, js a vše co stahuje odjinud než z adresáře /clanky/
# je potřeba buď test nebo chytrý regex pro určení adres, které se mají podstrkávat
RewriteRule ^(.*)$ /clanky/$1

# zabrání duplicitám přesměrováním na stránku bez /clanky/
RewriteRule ^/clanky/(.+)$ /$1 [R=301,L,NE]

Omlouvám se za překlep; nahraď Cond -> Rule
sitole
Profil
Takže jestliže to chápu dobře tak..

x.cz
- napady
---- bla.php
- .htaccess
---- RewriteEngine on
---- RewriteCond ^/napady/(.+)$ /$1 [R=301,L,NE]

A výsledek poté v prohlížeči bude x.cz/bla.php ?
Přesně toto jsem zapsal a dostal jsem chybu 500 hnedle na doméně x.cz
juriad
Profil
A ne, to co jsi zapsal znamená, že pokud zadáš do prohlížeče adresu x.cz/napady/bla.php, tak přesměruje na x.cz/bla.php, což je nutné z důvodu toho, že nechceš tu samou stránku mít na dvou adresách.
Pro zobrazení stránky na adrese x.cz/bla.php je potřeba to první pravidlo, které je v této podobě příliš tupé. Lépe jej však nelze zapsat, protože neznáme detaily tvého webu ani co za další přepisy zamýšlíš.
sitole
Profil
Takže jsem nakonec použil toto

RewriteRule   text   napady/text.txt
na stránce x.cz/text.txt se zobrazí x.cz/napady/text.txt
Všem děkuji za velkou pomoc.. :)
Jediné co jsem zatím nedořešil je automatické vzatí toho co je místo text.txt a přidání k text.txt bez té složky.
Vysledoval jsem, že předtím se dáva (.*), ale poté nevím jak to něco vyvolat i nakonci.
lionel messi
Profil
sitole:
Vysledoval jsem, že předtím se dáva (.*), ale poté nevím jak to něco vyvolat i nakonci.
Zátvorky okolo .* sú takzvanou referenciou, na ktorú sa odkazuje pomocou znaku $ nasledovaný číslom podľa poradia zátvorky. Napríklad pravidlo, ktoré je nanič:

RewriteRule clanky/(.*)/(.*) $2/$1

Po zadaní clanky/pes/kocka podstrčí kocka/pes.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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