Portál AbcLinuxu, 12. května 2025 06:22

Dotaz: doplnujici pravidlo do .htaccess

6.6.2011 23:07 Tom@T
doplnujici pravidlo do .htaccess
Přečteno: 466×
Odpovědět | Admin
Ahoj, delam poprve s .htaccess a jiz celkem dlouho stojim na miste a nemuzu se hnout dale.

Cil: domena.cz/cokoliv podstrcit domena.cz/index.php?id=cokoliv

soucasne nastaveni .htaccess
RewriteEngine on
RewriteRule ^(.*) index.php?id=$1 [nc,L,QSA]
takto je to ve stadiu kdy se premesruje vse vcetne css, pokud za zavorku doplnim napr. pismeno a : RewriteRule ^(.*)a index.php?id=$1 [nc,L,QSA] a zkusim link domena.cz/acokoliv tak vse funguje jak ma.

Poradili by jste mi prosim jak pravidlo upravit aby se nesmerovalo vse ale jen ty odkazy index.php?id=cokoliv

Vsem dekuji
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

7.6.2011 08:05 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: doplnujici pravidlo do .htaccess
Odpovědět | | Sbalit | Link | Blokovat | Admin
Asi budete muset nějak jinak popsat, čeho chcete docílit. Váš dotaz totiž vypadá, že chcete přesměrovat jakékoli dotazy z domena.cz/* na domena.cz/index.php?id=*, ale zároveň vám vadí, že se to takhle přesměrovává.

To pravidlo, které jste uvedl, funguje tak, že za $1 dosadí celou lokální část URL, tedy lomítko a vše za ním. Tj.:
domena.cz/           → domena.cz/index.php?id=/
domena.cz/neco       → domena.cz/index.php?id=/neco
domena.cz/index.html → domena.cz/index.php?id=/index.html
domena.cz/styly.css  → domena.cz/index.php?id=/styly.css
Atd.

Mimochodem, to pravidlo vpravo by mělo začínat lomítkem:
RewriteEngine on
RewriteRule ^(.*) /index.php?id=$1 [nc,L,QSA]
7.6.2011 08:48 Tom@T
Rozbalit Rozbalit vše Re: doplnujici pravidlo do .htaccess
Omlouvam se za nesrozumitelnost. V tuto chvili odkazy na webu vypadaji napr. takto:
http://www.domena.cz/index.php?id=renovace
a chci docilit cistych url ve formatu bez pripony:
http://www.domena.cz/renovace
7.6.2011 09:01 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: doplnujici pravidlo do .htaccess
RewiteRule se týká dotazů prohlížeče, tj. když do prohlížeče zadáte adresu http://www.domena.cz/renovace, přesměruje se (buď interně v rámci serveru, nebo změnou adresy v prohlížeči) na http://www.domena.cz/index.php?id=renovace. Pokud ale chcete změnit odkazy ve stránce, na to RewriteRule nemá žádný vliv – to musíte změnit buď ručně, nebo na to možná budou nějaké nástroje (které to mohou udělat jednorázově, nebo pro každý požadavek). Nebo pokud používáte nějaký redakční systém, možná půjde nastavit tak, aby generoval do odkazů čistá url.
7.6.2011 09:17 Tom@T
Rozbalit Rozbalit vše Re: doplnujici pravidlo do .htaccess
Odkazy ve strance zmenim rucne, Jde mi presne o to jak jste popsal v prvni casti.

Zadam-li do prohlizece
http://www.domena.cz/renovace
presmeruje se interne na obsah
http://www.domena.cz/index.php?id=renovace
ale prohlizec zobrazuje stale prvni odkaz.

Chtel jsem tim docilit prave timto pravidlem
RewriteRule ^(.*) index.php?id=$1 [nc,L,QSA]
aby se parametr $1 nahradil i hned za lomitko, nedokazu se bohuzel vyznat v teto sintaxy pravidel
7.6.2011 09:53 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: doplnujici pravidlo do .htaccess
ale prohlizec zobrazuje stale prvni odkaz.
To je tím, že v parametrech nemáte R, které způsobí, že se vrátí přesměrování do prohlížeče, ten změní adresu a zeptá se serveru na novou. Pak ale musíte ošetřit, aby se ta nová adresa nepřesměrovávala, jinak se to zacyklí.
aby se parametr $1 nahradil i hned za lomitko, nedokazu se bohuzel vyznat v teto sintaxy pravidel
Pokud je dotaz jenom lomítko, je obsahem první skupiny (.*) a dosadí se pak za 1. parametr $1. Tj. to vaše pravidlo dotaz na / přepíše na index.php?id=/. Syntaxe je regulární výraz, je to popsané v dokumentaci.

Asi by to tedy mělo vypadat takhle nějak:
RewriteEngine On
RewriteRule ^/index.php$ - [L]
RewriteRule ^(.*)$ /index.php?id=$1 [nc,L,QSA,R]
7.6.2011 10:14 l4m4
Rozbalit Rozbalit vše Re: doplnujici pravidlo do .htaccess
R je právě to, co tam mít nesmí, pokud chce, aby v prohlížeči zůstala ,hezká` adresa.
7.6.2011 10:26 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: doplnujici pravidlo do .htaccess
ale prohlizec zobrazuje stale prvni odkaz.
Z toho jsem usoudil, že v prohlížeči má být „ošklivá“ adresa.
7.6.2011 10:56 Tom@T
Rozbalit Rozbalit vše Re: doplnujici pravidlo do .htaccess
V prohlizeci ma zustat ta "hezka" www.domena.cz/renovace

Kdyz jsem nyni zkusil vyse zminene pravidlo:
RewriteEngine On
RewriteRule ^/index.php$ - [L]
RewriteRule ^(.*)$ /index.php?id=$1 [nc,L,QSA,R]
Nastane chyba 500 internal server error
7.6.2011 11:01 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: doplnujici pravidlo do .htaccess
V prohlizeci ma zustat ta "hezka" www.domena.cz/renovace
V tom případě tam to [R] být nemá.
Nastane chyba 500 internal server error
Podívejte se do logu Apache, tam bude napsaná příčina chyby.
7.6.2011 11:05 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: doplnujici pravidlo do .htaccess
Možná je přebytečný dolar na konci vzoru, stejně se porovná celý vstup. Alespoň v příkladech v dokumentaci ten dolar nikde není.
7.6.2011 17:57 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: doplnujici pravidlo do .htaccess
Nejsem si jistý jak je to s velikostí písmen u přepínačů, ale 'nc' nic není 'NC' už jo, tak jestli to nebude ta 500-vka.
Znak $ tam může být, v tom by problém být neměl (bez $ by některé pravidla nešla zapsat…)
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
7.6.2011 21:02 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: doplnujici pravidlo do .htaccess
Pokud je nc problém, muselo to hlásit chybu už u původní tazatelovi konfigurace – já jsem to jen okopíroval a ani jsem nezkoumal význam toho přepínače, takže taky nemusí dávat se zbytkem přepínačů smysl.
7.6.2011 21:52 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: doplnujici pravidlo do .htaccess
Hm, na tom asi něco bude. (Buď to ignoruje, nebo to může být i malými…)
Počkáme co z toho vyleze :-)?
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
7.6.2011 10:59 pletiplot
Rozbalit Rozbalit vše Re: doplnujici pravidlo do .htaccess
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nastuduj si directivu RewriteCond, která umožňuje specifikovat výjimky. To je podle mě přesně to co potřebuješ.
7.6.2011 14:58 Thomas123 | skóre: 15
Rozbalit Rozbalit vše Re: doplnujici pravidlo do .htaccess
Odpovědět | | Sbalit | Link | Blokovat | Admin

Vím, o co se snažíš. Zkus se inspirovat tady:

http://latrine.dgx.cz/hadanka-znate-mod_rewrite

Nebo použij rewrite tak, aby bral pouze soubory bez koncovky

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.