Autor | Zpráva | ||
---|---|---|---|
sitole Profil |
#1 · Zasláno: 16. 7. 2015, 22:35:31
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 |
#2 · Zasláno: 16. 7. 2015, 22:47:18
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 |
#5 · Zasláno: 16. 7. 2015, 23:10:01
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 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. |
||
Časová prodleva: 10 let
|
0