Autor Zpráva
perwin
Profil
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 *
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
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 *
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
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
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]
perwin
Profil
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
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 *
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
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 *
A jak poznáte, která stránka má být zobrazena, když budou mít všechny stejnou adresu?
perwin
Profil
Kajman:
Nojo je to blbost, uznávám.
perwin
Profil
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 *
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
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
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 *
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
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 *
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
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
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
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]
perwin
Profil
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
To můžeš udělat podle mod_rewrite pre 3 parametre. Jen dáš místo podržítek lomítka.
perwin
Profil
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>
Ať v tomto souboru .xml dám před obrázky / nebo ne, stejně se to nezobrazí.
Děkuji za odpovědi
Davex
Profil
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?

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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