Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Úprava pravidel pro mod_rewrite

Chlapci, není tu někdo, kdo by zvládnul úpravu pravidel pro mod_rewrite?
Kvůli CMS (seo url), který provozuji na své doméně, jsem zaslal na hosting vygenerovaná pravidla pro úpravu konfigurace na hepnar.cz:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

SEO url fungují, ale pravidla ovšem přepisují i adresu

www.hepnar.cz/shop

kde mám nainstalovaný shop - tudíž odkaz nefunguje a stránka je nenalezena.
Odkaz na shop funguje teď pouze v tomto tvaru:

www.hepnar.cz/shop/index.php

Potřeboval bych v těch pravidlech udělat vyjímku pro adresu, kde je shop (chtějí to po mě na hostingu), ale nevím jak na to.

Nezvládnul by jste to, prosím, někdo? Díky za pomoc či radu.

Předmět Autor Datum
Tie pravidlá vyzerajú v poriadku, chyba bude zrejme inde. Nasvedčuje tomu aj to, že pri hocijakej ne…
los 05.04.2006 19:28
los
No...přiznávám, že tomu moc nerozumím, ale nastavená pravidla zřejmě přepisují adresu shop na něco j…
Freeman 05.04.2006 20:22
Freeman
Pravidlá robia to, že keď si klient vyžiada súbor alebo adresár, ktorý na serveri neexistuje, o zobr…
los 05.04.2006 21:03
los
Díky za info a trpělivost. Odkaz hepnar.cz/shop mi fungoval normálně, pak jsem vyměnil statický web…
Freeman 05.04.2006 22:34
Freeman
Lepšie by bolo, keby si si to mohol vyskúšať u seba na počítači. Netestoval som to a môže tam byť ch…
los 05.04.2006 22:43
los
Jo, jo..., zkusit se má všechno. Ať to otestují kluci na hostingu, když už mě s tím nechají trápit.…
Freeman 06.04.2006 02:38
Freeman
len taky napad ale podla logiky mas nastavene nech prepisuje tu jednu url to ze ti nefunguje ina je…
fleg 06.04.2006 11:16
fleg
Nevím jestli Tě dobře chápu s tím nastavením, ale ta původní úprava pravidel se měla týkat hepnar.cz…
Freeman 06.04.2006 11:51
Freeman
aha uz to chapem co chces. som myslel ze mas problem torsku inde skus toto (je to obycajny redirect)…
fleg 06.04.2006 12:37
fleg
Tým definuješ, že všetky požiadavky o stránku obsahujúce /shop/ sa trvalo premiestnili na /shop/inde…
los 06.04.2006 12:43
los
ok beriem spat nedomyslel som to;o)
fleg 06.04.2006 12:52
fleg
inak ked som oetstoval toto tvoje riesenie u seba prestala mi ist cela domena
fleg 06.04.2006 13:11
fleg
Které řešení máš na mysli? Toto? RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f…
Freeman 06.04.2006 13:22
Freeman
od losa
fleg 06.04.2006 13:30
fleg
No, tak koukám, že to nebude žádná legrace. Chápu, že je dost obtížné napsat pravidlo bez možnosti h…
Freeman 06.04.2006 13:40
Freeman
celkom dobre nechapem preco nechces subdomenu. ako som pozeral na strukturu tvojej stranky klienti s…
fleg 06.04.2006 14:18
fleg
Díky! No, abych řekl pravdu, už nad tím laboruji tak dlouho, že mi začíná unikat sama podstata věci.…
Freeman 06.04.2006 15:31
Freeman
Ještě tady mám dvě možnosti jak pravidla upravit, co vy na to? 1. RewriteRule ^shop/?$ shop/index.p…
Freeman 06.04.2006 22:43
Freeman
Obe sa od môjho líšia otáznikom - teda, že okrem požiadavky na /shop/ prepíšu aj požiadavku na /shop…
los 06.04.2006 23:10
los
Takže toto pravidlo by mělo být rozumným kompromisem (pro případ, že by tam server lomítko nepřidal)…
Freeman 06.04.2006 23:30
Freeman
Môj názor je taký, že lomítko by tam malo byť, takže som za: RewriteRule ^shop/$ shop/index.php [L,Q…
los 06.04.2006 23:38
los
No vidíš, chtěl jsem se na tu tečku zeptat, ale smířil jsem se s tím, že tam patří. :-) Pokud to pof…
Freeman 06.04.2006 23:48
Freeman
Už bych to rád poslal na hosting, ale mám dilema jestli má být na posledním řádku před indexem lomít…
Freeman 07.04.2006 12:43
Freeman
Vďaka tomu, že tam je RewriteBase nastavené na "/", je jedno, či tam to lomítko bude alebo nie. Ja h…
los 07.04.2006 18:31
los
Vyřešeno - díky! RewriteRule ^shop/?$ shop/index.php [R,L,QSA] poslední
Freeman 07.04.2006 19:01
Freeman

Tie pravidlá vyzerajú v poriadku, chyba bude zrejme inde.
Nasvedčuje tomu aj to, že pri hocijakej nesprávnej adrese sa zobrazí "Litujeme, ale Vašemu zadání neodpovídá žádný příspěvek.", ale pri adrese na shop sa zobrazí "Nenalezeno".

No...přiznávám, že tomu moc nerozumím, ale nastavená pravidla zřejmě přepisují adresu shop na něco jiného a proto ten odkaz nefunguje.
Potřeboval bych v pravidlech udělat vyjímku pro tuto adresu, ale fakt nevím jak na to.
Důvod proč mi to vadí je ten, že ze spousty webů mi nevedou odkazy na home, ale právě na e-shop.
Jestli někdo víte jak s tím pohnout - předem díky!

Pravidlá robia to, že keď si klient vyžiada súbor alebo adresár, ktorý na serveri neexistuje, o zobrazenie stránky sa postará /index.php. Keďže adresár shop existuje, tak sa toto pravidlo nevykoná.
Keď si klient vypýta adresár /shop/, mal by sa (pri štandardnom nastavení servera) vyhľadať súbor index.php, čiže by to malo správne zobraziť /shop/index.php. Keďže to nezobrazuje, tak je buď inak nastavený server alebo existuje súbor /.htaccess, ktorý prepisuje url inak.
O to, že sa v prípade prístupu k /shop/ zobrazí "Nenalezeno", sa stará stránka, ktorá obsluhuje chybu 404. O ostatné stránky sa stará index.php, ktoré napíše "Litujeme, ale Vašemu zadání neodpovídá žádný příspěvek.".

Môžeš ešte zmeniť tie pravidlá, ale lepšie by bolo zistiť, prečo to nefunguje tým prvým spôsobom:

RewriteEngine On
RewriteBase /
RewriteRule ^shop/$. shop/index.php [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]

Díky za info a trpělivost. Odkaz hepnar.cz/shop mi fungoval normálně, pak jsem vyměnil statický web za CMS WP. Potřeboval jsem aby fungovali seo odkazy ve tvaru např. hepnar.cz/laboratorni-vahy. Jsem u cesky-hosting.cz kde .htaccess nepoužívají a pravidla pro mod_rewrite nastavují po přijetí e-mailového požadavku.
Poslal jsem tam tedy výše zmiňovaná pravidla, upravili mi konfiguraci, seo url o.k., ale pak přestal fungovat odkaz hepnar.cz/shop.
Z podpory jsem obdržel info, že za to mohou mnou zaslaná pravidla a že ji mám zaslat aktualizovanou verzi pravidel a pak mi to opět nastaví.
Nějak to nezvládám, proto tady tak žebrám.
Proč nefunguje první způsob nevím, takže jim zkusím zítra poslat tu tvou úpravu a uvidíme.
Každopádně mockrát díky!

Nevím jestli Tě dobře chápu s tím nastavením, ale ta původní úprava pravidel se měla týkat hepnar.cz (kde je CMS) a byla provedena kvůli "hezkým" url.
Dotkla se bohužel i adresáře shop (kde je nainstalován e-shop), takže odkaz hepnar.cz/shop přestal fungovat a proto potřebuji nějakou další úpravu.
Zatím jsem na hosting nic neodeslal, ale když se nic jiného nevymyslí, zkusím tam poslat tu úpravu od losa.

Tým definuješ, že všetky požiadavky o stránku obsahujúce /shop/ sa trvalo premiestnili na /shop/index.php. Aj napr. /shop/test.php sa presmeruje na /shop/index.php. Navyše ho to presmeruje, takže používateľ uvidí adresu /shop/index.php a nie /shop/.

Které řešení máš na mysli? Toto?

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

Pokud ano, to jsou pravidla, která vygeneroval WP a já je zaslal na hosting - po úpravě konfigurace na základě těchto zaslaných pravidel, nemám kromě nefunkčního odkazu na /shop žádný problém.
Nebo jsi myslel úpravu od losa?

No, tak koukám, že to nebude žádná legrace. Chápu, že je dost obtížné napsat pravidlo bez možnosti ho otestovat, jen netuším jakým způsobem se doberu k nějakému řešení a zároveň nechápu proč mi s tím na hostingu nepomůžou?!, že by podobnou záležitost nikdy neřešili!? Mám tak specifické přání?, když si přeji fungování odkazu ve tvaru /shop.
Nechci kvůli tomu přesouvat shop např. na subdoménu. Ach jo.

celkom dobre nechapem preco nechces subdomenu. ako som pozeral na strukturu tvojej stranky klienti sa tam aj tak preklikavaju a ake budu mat vyslednu url je im asi jedno. druha vec je ze mod pre mod rewrite nevidim ine uplatnenie ako bezpecnostne v tvojom pripade. co sa tyka kozmetiky malokto pozera na url vacsina ludi si ani nevsimne ze sa im tam url vobec prepisuje ale ked to tak chces budiz.
ked budem mat cas mrknem sa vecer na to a volaco vykoumam.

Díky!
No, abych řekl pravdu, už nad tím laboruji tak dlouho, že mi začíná unikat sama podstata věci. Mám pocit, že mi šlo hlavně o to, abych nemusel po celém webu (někde to ani nejde) měnit odkazy na můj shop, protože v katalozích apod. jsou právě ve tvaru /shop a teď nefungují (přesunem shopu na subdoménu bych to nevyřešil).
Nemůžu to všude opravit a navíc odkaz na obchod ve tvaru /shop/index.php (který teď jediný funguje) moc dobře nevypadá a ani bych ho nechtěl nikomu posílat. :-)
Zatím jsem nechal změnit odkazy směřující na shop směrem na home page tam, kde mi to přidalo důležité (katalog Seznam apod.), takže to nebude zase taková tragédie.
Každopádně každá rada se cení - díky!

Obe sa od môjho líšia otáznikom - teda, že okrem požiadavky na /shop/ prepíšu aj požiadavku na /shop (bez posledného lomítka). Do toho pravidla som to nedával, pretože to už server prepisuje (dá sa to vidieť tak, že keď používateľ zadá shop, tak ho server presmeruje na shop).
Druhé pravidlo má navyše QSA (Query String Append), to znamená, že ak si niekto vypýta stránku /shop/?name=value, tak sa to prepíše na /shop/index.php?name=value (bez QSA by to bolo iba /shop/index.php). To QSA by som tam nechal.

Takže toto pravidlo by mělo být rozumným kompromisem (pro případ, že by tam server lomítko nepřidal)?
RewriteRule ^shop/?$ shop/index.php [L,QSA]

nebo myslíš, že je výhodnější ta Tvá původní úprava?
RewriteRule ^shop/$. shop/index.php [L,QSA]

Ty parametry QSA tam asi teda nechám. Přijmi mé upřímné díky za pomoc, jestli bude zítra chvilka času, zkusím to testnout.

Vďaka tomu, že tam je RewriteBase nastavené na "/", je jedno, či tam to lomítko bude alebo nie. Ja ho tam nedávam kvôli tomu, že keď dám web do iného adresára, tak mi stačí v .htaccess zmeniť iba RewriteBase (ináč by som musel meniť zakaždým všetky pravidlá).

Zpět do poradny Odpovědět na původní otázku Nahoru