Ú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.
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:
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!
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ť chyba (hoci žiadnu nevidím).
Jo, jo..., zkusit se má všechno. Ať to otestují kluci na hostingu, když už mě s tím nechají trápit.
Buď to půjde nebo nepůjde, maximálně to udělá z Apache indiánskou babičku.
len taky napad ale podla logiky mas nastavene nech prepisuje tu jednu url to ze ti nefunguje ina je logicke. ak chces aj tu druhu musis ju tam pridat. ale idem este postudovat ako to vlastne cele funguje
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.
aha uz to chapem co chces. som myslel ze mas problem torsku inde
skus toto (je to obycajny redirect).
RewriteRule /shop/ /shop/index.php [R=301]
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/.
ok beriem spat nedomyslel som to;o)
inak ked som oetstoval toto tvoje riesenie u seba prestala mi ist cela domena
Které řešení máš na mysli? Toto?
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?
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!
Ještě tady mám dvě možnosti jak pravidla upravit, co vy na to?
1. RewriteRule ^shop/?$ shop/index.php [L]
2. RewriteRule ^shop/?$ shop/index.php [L,QSA]
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.
Môj názor je taký, že lomítko by tam malo byť, takže som za:
RewriteRule ^shop/$ shop/index.php [L,QSA]
Teraz pozerám, že za $ som mal bodku - to je preklep, tá bodka tam nemá čo hľadať (asi kvôli tomu to flegovi nefungovalo).
No vidíš, chtěl jsem se na tu tečku zeptat, ale smířil jsem se s tím, že tam patří.
Pokud to pofrčí a budeš mít cestu do Liberce - jsi mým hostem, případně Ti udělám speciální mod_rewrite cenu na nějakou váhu.
Zatím díky!
Už bych to rád poslal na hosting, ale mám dilema jestli má být na posledním řádku před indexem lomítko nebo nemá?!
RewriteRule . index.php [L] (by los) nebo RewriteRule . /index.php [L] (původní)
Poradíte ještě?
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á).
Vyřešeno - díky!
RewriteRule ^shop/?$ shop/index.php [R,L,QSA]