Autor | Zpráva | ||
---|---|---|---|
perwin Profil |
#1 · Zasláno: 19. 11. 2010, 22:56:27
Ahoj,
mám problém se souborem .htaccess na serveru. Dal jsem do něj kód, že když návštěvník zadá třeba http://nejakyweb.cz/web.php?page=nejakastrana, mělo by se mu zobrazit http://nejakyweb.cz/sites/nejakastrana/. Kód je zde: RewriteEngine On RewriteBase / RewriteRule ^sites/?([_0-9a-z-]+)?/?$ /web.php?page=$1 [QSA] (tento kód jsem našel zde http://www.codingforums.com/showpost.php?p=295261&postcount=11) Prosím poraďte, proč to nefunguje. Děkuji |
||
Jostram Profil * |
#2 · Zasláno: 20. 11. 2010, 04:07:41
Ten váš příklad dělá přesný opak - z "http://nejakyweb.cz/sites/nejakastrana/" udělá pro PHP skript "http://nejakyweb.cz/web.php?page=nejakastrana". Vy potřebujete "vypreparovat" nějaký parametr z URL. V HTACCESS se to dá udělat třeba nějak takto:
RewriteCond %{QUERY_STRING} page=(.*) RewriteRule ^(.*) /sites/%1/ Zkuste se podívat sem pro případnou inspiraci. |
||
perwin Profil |
#3 · Zasláno: 20. 11. 2010, 10:16:22
Jostram:
A jak potom tedy bude vypadat odkaz? Takto? http://nejakyweb.cz/sites/nejakastrana/ Protože když tam dám to sites/uvod/ tak mi to řekne že odkaz neexistuje |
||
Jostram Profil * |
#4 · Zasláno: 20. 11. 2010, 10:25:30
perwin:
Aha, já asi špatně pochopil dotaz. - To, co jste napsal vy zaručí "překlad" neexistující stránky sites/uvod/ na web.php?page=uvod (aniž by to klient poznal, ten stále uvidí /sites/uvod/) - To, co jsem popsal já dělá to, že pokud návštěvník jde na web.php?page=uvod, tak je poslán na stránku sites/uvod/. Jestli jsem to pochopil napodruhé lépe, tak vy chcete jakousi kombinaci obojího? |
||
perwin Profil |
#5 · Zasláno: 20. 11. 2010, 14:08:55
Když návštěvní přijde třeba na http://nejakyweb.cz/web.php?page=nejakastrana, aby se adresa vypsala jako http://nejakyweb.cz/sites/nejakastrana/. O to mi jde. Děkuji
|
||
Davex Profil |
#6 · Zasláno: 22. 11. 2010, 22:10:23
K pravidllům [#1] přidej přesměrování na nová URL:
RewriteCond %{QUERY_STRING} ^page=([^&]+) RewriteRule ^web\.php$ /sites/%1/? [R=301,NE,L] |
||
Časová prodleva: 9 dní
|
|||
perwin Profil |
#7 · Zasláno: 1. 12. 2010, 10:58:04 · Upravil/a: perwin
Takže ten server Endora.cz zřejmě nepodporuje totu změnu... napíše to:
Tato stránka obsahuje smyčku přesměrování. Webová stránka na adrese http://nejakyweb.g6.cz/sites/uvod/ provedla příliš mnoho přesměrování. Chcete-li tento problém vyřešit, zkuste vymazat soubory cookie pro tento web nebo povolit soubory cookie třetích stran. Pokud problém přetrvává, pravděpodobně se jedná o chybu konfigurace serveru a nikoli o problém ve vašem počítači. Chybová zpráva: Chyba 310(net::ERR_TOO_MANY_REDIRECTS): Proběhlo příliš mnoho přesměrování. A teď se mi ty stránky zasekali... když vymažu ten kód v .htaccess tak mě to stejně pořád přesměrovává na ...cz/sites/nejakastranka/ a to nefuguje, na normální odkaz web.php?page=nejakastrana nelze jít. Prosím o radu. Díky |
||
perwin Profil |
#8 · Zasláno: 1. 12. 2010, 11:24:14 · Upravil/a: perwin
Davex:
Kód v .htaccess: RewriteEngine On RewriteBase / RewriteRule ^strana/?([_0-9a-z-]+)?/?$ /web.php?page=$1 [QSA] RewriteCond %{QUERY_STRING} ^page=([^&]+) RewriteRule ^web\.php$ /strana/%1/? [R=301,NE,L] |
||
Kajman_ Profil * |
#9 · Zasláno: 1. 12. 2010, 11:30:22
RewriteEngine On RewriteBase / RewriteRule ^strana/?([_0-9a-z-]+)?/?$ /web.php?page=$1 [QSA] RewriteCond %{ENV:REDIRECT_STATUS} ^$ RewriteCond %{QUERY_STRING} ^page=([^&]+) RewriteRule ^web\.php$ /strana/%1/? [R=301,NE,L] |
||
perwin Profil |
#10 · Zasláno: 1. 12. 2010, 11:37:01
Jo, díky moc.
Je nějaký způsob, jak udělat, aby se z http://nejakyweb.cz/web.php?page=nejakastrana vypsala adresa http://nejakyweb.cz ? Díky |
||
Kajman_ Profil * |
#11 · Zasláno: 1. 12. 2010, 12:33:24
A jak poznáte, která stránka má být zobrazena, když budou mít všechny stejnou adresu?
|
||
perwin Profil |
#12 · Zasláno: 1. 12. 2010, 13:01:30
Kajman:
Nojo je to blbost, uznávám. |
||
perwin Profil |
#13 · Zasláno: 1. 12. 2010, 13:32:39
Předělal jsem si ten script tak, aby byla adresa uvod.php http://nejakyweb.cz/uvod/. Ale jak mám udělat, když bude uvod.php ve složce uvod, jak mám na něj odkázat? http://nejakyweb.cz/uvod/uvod/ nefunguje. Děkuji
|
||
Kajman_ Profil * |
#14 · Zasláno: 1. 12. 2010, 13:43:55
Nejdřív si pořádně rozmyslete cesty a jejich skutečné vykonvávání! Pak teprve můžete začít psát pravidla přepisu.
|
||
perwin Profil |
#15 · Zasláno: 1. 12. 2010, 13:50:01
Můj script v .htaccess:
RewriteEngine On RewriteBase / RewriteRule ^/?([_0-9a-z-]+)?/?$ /web.php?page=$1 [QSA] RewriteCond %{ENV:REDIRECT_STATUS} ^$ RewriteCond %{QUERY_STRING} ^page=([^&]+) RewriteRule ^web\.php$ /%1/? [R=301,NE,L] Prosím poraďte mi, jak to mám upravit, abych mohl mít i cesty k souborům včetně složek, já jsem úplně v koncích. Děkuji |
||
perwin Profil |
#16 · Zasláno: 1. 12. 2010, 16:04:01
Nerad znovu otravuju, ale vyskytl se problém.
Dokud jsem tam nedal kód do .htaccess, tak se po příchodu na stránku (http://nejakyweb.cz/) vždy zapnul jako první soubor index.html. Ale nyní se se souborem .htaccess nespouští automaticky žádná stránka, a napíše mi to Error 404. Děkuji |
||
Kajman_ Profil * |
#17 · Zasláno: 1. 12. 2010, 16:26:37
Jak se to má přepisovat, když tam bude složka?
Podle pravidel se úvodní stránka přepíše na web.php s prázným parametrem page. Pokud to tak nechcete, změňte si pravidla, aby se chovala přesně tak, jak chcete. |
||
perwin Profil |
#18 · Zasláno: 1. 12. 2010, 16:40:20
Přepsat kód tak, aby když je soubor.php ve složce 123, aby mohla být adresa k souboru: nejakyweb.cz/123/soubor/ - s aktuálním kódem to nelze.
Jak mám změnit ty pravidla? RewriteRule ^/?([_0-9a-z-]+)?/?$ /web.php?page=$1 [QSA] na RewriteRule ^/?([_0-9a-z-]+)?/?$ /web.php?page=index [QSA] ? Díky |
||
Kajman_ Profil * |
#19 · Zasláno: 1. 12. 2010, 19:47:17
perwin:
„s aktuálním kódem to nelze.“ Ani když jej dáte do složky 123? „Jak mám změnit ty pravidla?“ A není jednodušší upravit web.php, aby použil index, pokud není page zadáno? |
||
perwin Profil |
#20 · Zasláno: 2. 12. 2010, 09:56:07
Kajman:
„Ani když jej dáte do složky 123?“ To mám dát .htaccess se stejným kódem i do té složky? „A není jednodušší upravit web.php, aby použil index, pokud není page zadáno?“ Ano, to jsem upravil, a funguje to. Díky |
||
perwin Profil |
#21 · Zasláno: 2. 12. 2010, 10:12:31
Zkusil jsem zkopírovat soubor .htaccess do složky hry a upravit je takto:
RewriteEngine On RewriteBase / RewriteRule ^/?([_0-9a-z-]+)?/?$ /web.php?page=hry/$1 [QSA] RewriteCond %{ENV:REDIRECT_STATUS} ^$ RewriteCond %{QUERY_STRING} ^page=([^&]+) RewriteRule ^web\.php$ /%1/? [R=301,NE,L] Potom mi začali fungovat odkazy na např. hra1 - nejakastranka.cz/hry/hra1/. Jenže potom samotná stránka nejakastranka.cz/hry/ přestala fungovat - napsalo to error 404. Prosím o radu. Díky |
||
Davex Profil |
#22 · Zasláno: 3. 12. 2010, 17:28:13
Mám pocit, že si pleteš složky s cestou v URL. Nejdřív si musíš pořádně rozmyslet, jak se mají různé varianty cesty v URL přepisovat na skript s parametrem. Teď pleteš dohromady různé složky 123 a hry, přičemž PHP skript máš v kořeni webu a všichni jsme z toho popleteni.
Proč vlastně nepřepisuješ všechny neexistující soubory a adresáře na skript? RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^/?(.*[^/])/?$ /web.php?page=$1 [QSA,L] RewriteCond %{ENV:REDIRECT_STATUS} ^$ RewriteCond %{QUERY_STRING} ^page=([^&]+) RewriteRule ^web\.php$ /%1/? [R=301,NE,L] |
||
Časová prodleva: 9 měsíců
|
|||
perwin Profil |
#23 · Zasláno: 2. 9. 2011, 13:40:27 · Upravil/a: perwin
Davex:
Já jsem si to spletl. Potřebuji vědět, jak udělat např. z celého http://web.cz/index.php?page=uvod&neco=necojinyho&neco2=necojinyho2 tohle: http://web.cz/uvod/necojinyho/necojinyho2/ Taky je zde problém se soubory. Když totiž použiju tento kód, tak všude, kde je třebas src="obrazek.jpg", musím upravovat na src="/obrazek.jpg" Děkuji za odpovědi |
||
Davex Profil |
#24 · Zasláno: 2. 9. 2011, 19:26:32
To můžeš udělat podle mod_rewrite pre 3 parametre. Jen dáš místo podržítek lomítka.
|
||
perwin Profil |
#25 · Zasláno: 3. 9. 2011, 12:11:19
Davex:
A jak vyřešit ten problém se soubory? Ani tolik nevadí, že před každou adresou na obrázek apod. musí být /. Hlavní problém nastává třeba u Flashe. Mám ve flashi vyrobený slideshow, a obrázky do něj se načítají přes data.xml. Na URL http://www.web.cz/ se obrázky ve flashi objevují, ale jakmile je URL např. http://www.web.cz/uvod/, tak se obrázky přestanou zobrazovat, ale flashový soubor .swf se načte, protože v tagu <object> před ním mám to požadované /. Soubor data.xml: <?xml version="1.0"?> <galerie pauza="5" xpoz="0" ypoz ="0"> <obr>/pic1.jpg</obr> <obr>/pic2.jpg</obr> <obr>/pic3.jpg</obr> </galerie> Děkuji za odpovědi |
||
Davex Profil |
#26 · Zasláno: 3. 9. 2011, 19:04:46 · Upravil/a: Davex
Pokud se nemají přepisovat existující soubory, tak se musí přidat podmínka:
RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^/]+)/([^/]+)/([0-9]+)$ index.php?rw=1&action=$1&album=$2&file=$3 [L,QSA] Avšak tím to asi nebude. Nemůže to být tím Flashem, který na lomítka kašle a snaží sí načítat obrázky odjinud než jsou? |
||
Časová prodleva: 13 let
|
0