| Autor | Zpráva | ||
|---|---|---|---|
| 147477 Profil |
#1 · Zasláno: 3. 3. 2013, 12:12:57
Zdravím,
potřeboval bych pomocí .htaccess a enginu mod_rewrite zamaskovat všechny podstránky s příponou .html za jednu stránku. V adresním řádku by pak byla pouze domena.cz a nikoliv kecy za lomítkem. Jak by měl podle vás vypadat funkční kód? Díky za rady. |
||
| Camo Profil |
#2 · Zasláno: 3. 3. 2013, 12:28:11
147477:
RewriteRule \.html$ %{HTTP_HOST} [R=301,L] ??? |
||
| 147477 Profil |
Error 404. :(
Stránka domena.cz/cokoliv.html se změní na prapodivný tvar http://domena.cz/www/domena.cz/domena.cz/domena.cz
Zapomněl jsem zdůraznit, že používám .htpasswd - asi to s tím bude souviset... Ale díky za snahu! |
||
| Davex Profil |
#4 · Zasláno: 3. 3. 2013, 16:36:16
147477:
Podle čeho má webserver poznat, kterou podstránku odeslat a jak se bude odkazovat na ostatní podstránky? |
||
| 147477 Profil |
Ne, mně jde jen o to skrýt v adresním řádku co je za lomítkem - nic víc, nic míň.
U index.html mi to fungovalo bez problémů, ale nevím, jak to explicitně nastavit pro všechny ostatní podstránky. |
||
| Davex Profil |
#6 · Zasláno: 3. 3. 2013, 16:56:18
147477:
„Ne, mně jde jen o to skrýt v adresním řádku co je za lomítkem“ To, co se zobrazí v adresním řádku, je v kompetenci prohlížeče a nesouvisí to s nastavením serveru, který to ani nemůže ovlivnit. Na doméně se ti načítá soubor index.html, protože je na serveru nastaven jako výchozí dokument v adresáři. |
||
| 147477 Profil |
Tento funkční script po otevření adresy domena.cz/index.html text za lomítkem automaticky skryje, v adresním řádku zůstává domena.cz:
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+/)*index\.html\ HTTP/
RewriteRule ^(([^/]+/)*)index\.html$ http://domena.cz/$1 [R=301,L]Potřebuji jej zobecnit tak, aby fungoval i pro jiné podstránky, např. index2.html. Bylo by to možné? |
||
| Davex Profil |
Pokud nechceš zobrazit obsah žádné jiné podstránky, tak to jde takto.
RewriteEngine On RewriteRule \.html$ http://domena.cz/ [R=302,NS,L] |
||
| 147477 Profil |
Děkuji - jenom nechápu ty příznaky...
[R=302] - stačilo by jen [R], ne? Je vůbec nutné obecně uvádět přesměrování, nestačilo by podstrkávání? [NS] - nemá být [NC]? Nefunguje mi to - adresu sice skryje, ale vždycky načte domena.cz, tedy index.html. :( Davex: „Pokud nechceš zobrazit obsah žádné jiné podstránky, tak to jde takto.“ To není to, co nechci. :D Rád bych zobrazil obsah každé podstránky, pouze ukryl (tj. zamaskoval) v adresním řádku její skutečnou adresu. V PHP brnkačka - proč v HTML tak složité? |
||
| Camo Profil |
Davex:
Môžem mať otázku? Čo robí ten NS flag(z dokumentácie som to moc nepochopil)? Resp. prečo sa ten môj výraz tak zacyklil? Myslel som, že L musí stačiť... |
||
| Davex Profil |
147477:
„[R=302] - stačilo by jen [R], ne?“ Stačilo, ale číslo se lépe přepisuje na 301. „Nefunguje mi to... Rád bych zobrazil obsah každé podstránky, pouze ukryl (tj. zamaskoval) v adresním řádku její skutečnou adresu.“ Proto jsem se ptal, na to, na co jsem se ptal [#4] a psal v [#6], že to nejde na serveru nastavit. „V PHP brnkačka“ Ukaž, jak jsi schopen v PHP zamaskovat skutečnou adresu a na jedné adrese zobrazovat víc různých stránek. „proč v HTML tak složité?“ Nastavení serveru nesouvisí s HTML. Camo: „Čo robí ten NS flag“ Nemusí tam být. Jsem ho tam zvyklý dávat kvůli optimalizaci poddotazů, aby se pravidlo interně neprovádělo po podstrkávacích pravidlech, která nepřepisují na konkrétní objekt. Příznakem L se totiž většinou nekončí a na přepsanou adresu se pravidla aplikují znova.
Pokud by se v adresách používaly parametry, tak by tam správně měl ještě být příznak NE, který zabrání dalšímu escapování již escapovaných parametrů.
Aby to tedy nikoho nemátlo, tak nové pravidlo (které je nejspíš stejně k ničemu): RewriteEngine On
RewriteRule \.html$ http://%{HTTP_HOST}/ [R,NE,L] |
||
| Camo Profil |
#12 · Zasláno: 3. 3. 2013, 21:25:54
Davex:
No a prečo sa zacyklil v tom prepisovaní? Nemôžem to pochopiť... Veď tam máš to isté čo ja, len si tú adresu zadal natvrdo(čo je z hľadiska univerzálnosti o ktorú usilujem nežiadúce). To s tým L som tiež nepochopil. Ako to že sa aplikujú znova? Last snáď znamená last... Som z toho somár. Ak máš ešte na to nervy, tak vopred ďakujem za odpoveď. |
||
| Davex Profil |
Camo:
Tady se to nezacyklí, protože cílová adresa nevyhovuje regulárnímu výrazu \.html$ a ty jsi neuvedl protokol http://.
L znamená, že je to poslední pravidlo v probíhajícím cyklu. Na vzniklé adrese se spustí nové vyhodnocování všech pravidel stále dokola, dokud dochází ke změnám. Jakmile se v posledním přepisu v adrese nic nezmění, tak se přepisování ukončí.
Tady je jednoduché schéma. Příznak L způsobí to, že u vyhovujícího pravidla je výsledkem rozhodnutí More rules? => No.
|
||
| Camo Profil |
#14 · Zasláno: 4. 3. 2013, 14:47:15
Davex:
"jednoduché schéma..." ma fakt dostalo :DDDDD Idem si to preštudovať. |
||
|
Časová prodleva: 13 let
|
|||
0