Problém s friendly url

Zdravím,

na svým webu jsem nedávno zprovoznil friendly url přes mod_rewrite. Až do nedávna všechno fungovalo bez jakýchkoliv problémů, ale teď jsem si všiml, že aniž bych něco měnil (!) najednou nefungují některá url...

Například nefunguje:
http://ikrk.wz.cz/galerie/12-oslava-lencinych-narozenin/36-lenkanar1-jpg

Ale např. toto funguje bez problémů:
http://ikrk.wz.cz/galerie/15-vylet-v-praze/88-praha2-jpg

Opravdu jsem nic neměnil... a na localhostu mně to funguje. Nevíte, jestli se nějak neměnil apache, nebo něco? Nebo čím by to mohlo být?

V .htaccess mám např. toto:
RewriteRule ^(galerie)/([0-9]+)-[^/]+/([0-9]+)-[^/]+/?$ /index.php?page=galnahl&gal=$2&pic=$3 [L,QSA]

Budu vděčný za každý nápad. Díky moc.
to pravidlo mi připadne nějaký divný... kde máš jednotlivý části složených regexp, a $1 ? co takhle pravidlo trochu globalizovat, a zkusit třeba

RewriteRule ^galerie/([A-Za-z0-9-\_])/([A-Za-z0-9-\_])/?$ ?page=galnahl&gal=$1&pic=$2 [L]

nebo prostě jen

RewriteRule ^galerie([^/]+)/([^/]+)?/?$ ?page=galnahl&gal=$1&pic=$2 [L]

Query string append tam je k... ? také možno lepší použít RewriteBase, nežli přidávat před skutečnou adresu / ...a pokud máš index.php jako DirectoryIndex, také se tam psát nemusí. Až pokud by se jednalo o jiný soubor.

PS.: na localu regulární výraz funguje, na wz ne, normálka ;-)
Mi to pravidlo co psal Ikrk prijde v klidu (v poradku) - neposila totiz do php(GET) cely obsah, ale jenom cisla (zrejme id :) ).
ja bych se přidržel tohoto:

RewriteRule ^galerie/([0-9]+)-[^/]+/([0-9]+)-[^/]+/?$ %{DOCUMENT_ROOT}/index.php?page=galnahl&gal=$1&pic=$2 [L]

Pokud nefunguje ani toto, tak doporučuji použít tzv. ' debug mod ' - ja to obcas pouzivam tak for fun - proste v tom php skriptu, ktery ty hodnoty zpracovava necham vypsat obsahy a nazvy hodnot a zjistuji jeslti je chyba ve zpracovani v php nebo jeslti je chyba v mod_rewrite ... :))
Díky za odpovědi...

Přesně jak říká Freeze, vytahuju z toho url jen ty čísla a podle nic pak vybírám z DB... Je to sice dost primitivní způsob a lehce zneužitelnej, ale pro mé potřeby zatím stačí...

RewriteRule ^galerie/([0-9]+)-[^/]+/([0-9]+)-[^/]+/?$ %{DOCUMENT_ROOT}/index.php?page=galnahl&gal=$1&pic=$2 [L]

Toto nijak nepomohlo, furt stejný... Na chybu v php to nevypadá, protože když mám pravidlo:

RewriteRule ^(galerie)/([0-9]+)/([0-9]+)+/?$ /index.php?page=galnahl&gal=$2&pic=$3[L,QSA]

čili stačí zadat třeba url:
http://ikrk.wz.cz/galerie/12/36
a funguje to naprosto v pohodě... Kdyby to nefungovalo vůbec, tak pochopím, že mám ten reg. výraz špatně, ale když to nefunguje jen pro delší url? (nebo to tak aspoň vypadá) Nevím, jestli se to tak dělá standardně, nebo jestli jsem to tak udělal jen já jako apache lama, ale mám v .htaccessu prostě víc RewriteRule pod sebou, s tím, že každý se provede v daném případě a pak [L], aby se to zarazilo. Nemůže to být v tom? A ještě jedna věc, která mě napadla, jestli by to nemohlo být tím, že používám html tag base k určení kořene, protože mi to jinak nějak nešlo, či co...
Tak si nechej v php vypsat! hodnoty co php skript dostal : $_GET['gal'] a $_GET['pic'] ... a pak zkus zjistit, jeslti jsou spravne v pripade tech kratsich url a jake jsou v pripade delsich url - lip se zjistuje proc maji jinou hodnotu, kdyz vic jakou jinou hodnotu maji ;)
Freeze:

No, to je sice fakt, ale i kdyby ty hodnoty byly špatně, tak by se to mělo dostat na stránku s chybovou hláškou. Tady to zase funguje:

http://ikrk.wz.cz/galerie/666-vylet-v-praze/666-praha2-jpg#left-content

Což je vlastně stejný, jako adresa:
http://ikrk.wz.cz/index.php?page=galnahl&gal=666asdf&pic=666

(btw, nejsem satanista ;-) )

At je v $_GET['gal'] a $_GET['pic'] cokoliv, vždycky se to dostane (mělo by) buď na správnou stránku nebo na stránku s chybovou hláškou. Takže v php to není a v regulárním výrazu asi taky ne, protože v každým případě by to mělo nějak skončit, buď správně, chybovou hláškou nebo chybou 404, nebo ne?

Ale mně to dělá to, že to prostě "zamrzne"! Stránka se jakoby načítá, ale po chvíli přestane a zůstane jen bílá a prohlížeči se nepošle vůbec nic, ani hlavička! Což je i důvod, proč si v tomto případě nemůžu nechat vypsat $_GET - což je stejně asi jedno, protože i kdyby v $_GET byly nesmysly, tak by to muselo ukázat aspoň nějakou stránku!

No prostě to vůbec nechápu. Připadá mi to, jako kdyby se to nějak zacyklilo, nebo co já kurník vím...
Hm, nemas nahodou v .htaccessu jeste nejake dalsi rewrite pravidla ? (to mi pripada asi jako jedno z poslednich duvodu chyby - ze se tvoje url dostane do stavu,ze se zacykyli ... :) )
no to mám :-) to jsem právě psal, že nevím, jestli to tak může být... ale každý pravidlo by mělo být platný právě (pouze) pro jeden případ, pokud to mám dobře...

Celej .htaccess vypadá takto:

RewriteEngine On

RewriteRule ^o-mne$ /Ikrk_new/index.php?page=omne [L]
RewriteRule ^guestbook$ /Ikrk_new/index.php?page=guest [L]
RewriteRule ^admin$ /Ikrk_new/admin.php [L]

RewriteRule ^([a-zA-Z0-9_]+)$ /Ikrk_new/index.php?page=$1 [L]

RewriteRule ^(archiv)/([0-9]+)-[^/]+/?$ /Ikrk_new/index.php?page=$1&artid=$2 [L]
RewriteRule ^(archiv)/([0-9]+)+/?$ /Ikrk_new/index.php?page=$1&artid=$2 [L]
RewriteRule ^(archiv)/(zacatek)$ /Ikrk_new/index.php?page=archiv&zacatek=1 [L]
RewriteRule ^(archiv)/(konec)$ /Ikrk_new/index.php?page=archiv&konec=1 [L]

RewriteRule ^(galerie)/([0-9]+)-([^/]+)+/?$ /Ikrk_new/index.php?page=$1&gal=$2&title=$3 [L]
RewriteRule ^(galerie)/([0-9]+)+/?$ /Ikrk_new/index.php?page=$1&gal=$2 [L]

RewriteRule ^(galerie)/([0-9]+)-[^/]+/([0-9]+)-[^/]+/?$ /Ikrk_new/index.php?page=galnahl&gal=$2&pic=$3#left-content [L]
RewriteRule ^(galerie)/([0-9]+)-[^/]+/([0-9]+)+/?$ /Ikrk_new/index.php?page=galnahl&gal=$2&pic=$3#left-content [L]
RewriteRule ^(galerie)/([0-9]+)/([0-9]+)+/?$ /Ikrk_new/index.php?page=galnahl&gal=$2&pic=$3#left-content [L]
RewriteRule ^(galerie)/([0-9]+)/([0-9]+)-[^/]+/?$ /Ikrk_new/index.php?page=galnahl&gal=$2&pic=$3#left-content [L]
RewriteRule ^(gallastcom)/([0-9]+)-([^/]+)+/?$ /Ikrk_new/index.php?page=gallastcom&gal=$2&title=$3 [L]
RewriteRule ^(gallastcom)/([0-9]+)+/?$ /Ikrk_new/index.php?page=gallastcom&gal=$2 [L]

RewriteRule ^(galerie)/([0-9]+)-[^/]+/(zacatek)+/?$ /Ikrk_new/index.php?page=galnahl&gal=$2&zacatek=1#left-content [L]
RewriteRule ^(galerie)/([0-9]+)-[^/]+/(konec)+/?$ /Ikrk_new/index.php?page=galnahl&gal=$2&konec=1#left-content [L]

RewriteRule ^(guestbook)/([0-9]+)/([0-9]+)/([0-9]+)/?$ /Ikrk_new/index.php?page=guest&celkem=$2&od=$3&rows=$4 [L]

RewriteRule ^([a-zA-Z0-9_]+)/([0-9]+)/([0-9]+)/([0-9]+)/?$ /Ikrk_new/index.php?page=$1&celkem=$2&od=$3&rows=$4 [L]
RewriteRule ^([a-zA-Z0-9_]+)/([0-9]+)-([^/]+)+/([0-9]+)/([0-9]+)/([0-9]+)/?$ /Ikrk_new/index.php?page=$1&gal=$2&title=$3&celkem=$4&od=$5&rows=$6 [L]
RewriteRule ^([a-zA-Z0-9_]+)/([0-9]+)/([0-9]+)/([0-9]+)/([0-9]+)/?$ /Ikrk_new/index.php?page=$1&gal=$2&celkem=$3&od=$4&rows=$5 [L]
hm, lehce jsem to preletel - nemam ted pri veceru dost casu (projdu to snad rano(dopoledne) cele) - ale nepripada mi tam, ze by se neco bilo mezi sebou ... :/

(akorat mi pripadaji nektere pravidla zbytecne ... xD )
Díky moc... už si fakt nevím rady...
Nakonec jsem dostal napad jeste vecer ...
nechybi ti treba v nekterych odkazech na konci akorat / ? protoze to by to mohlo vysvetlovat (ve vsech rewriterule pocitas s tim, ze na konci lomitko je .... )

doporucuji pridat toto na zacatek (ale nemusi to byt zrovna nejrychlejsi, pokud mas vetsi strukturu webu) .... (prida to lomitko na konec,pokud chybi :) )

RewriteCond %{REQUEST_FILENAME} -f [NC,OR]
RewriteCond %{REQUEST_FILENAME} -d [NC]
RewriteRule ^(.+[^/])$ /$1/ [R=301]

pokud mas ale strukturu webu vetsi a mas jistotu ze vsechny tvoje soubory maji nejakou priponu (na lepsich systemech soubory priponu mit nemusi) tak muzes pouzit jenom toto:

RewriteCond %{REQUEST_URI} !\.[[:alnum:]]+$
RewriteRule ^(.+[^/])$ /$1/ [R=301]

Jeslti muzu neco doporucit, tak tam jedno z tohoto dej i pokud tenhle tvuj problem, nebyl v lomitkach .... :)
Sry, muj prispevek neber vazne ... asi neumim cist .... zkopiroval jsem si to spatne na disk .... :(( zkusim radsi neco najit rano ://
No to lomítko na konci by právě mělo být ošetřený tím /? na konci každýho reg. výrazu... Čili že tam může a nemusí být... Ale jinak ty adresy by měly být generovaný pořád stejně, je to pořád stejnej skript.
Vsak jsem se omlouval ... :) uz jsem asi blbe videl ...

dosel jsem ted ale k jednomu zajimavemu zjisteni :) ...

adresa:
http://ikrk.wz.cz/galerie/12-o/36-lenciny-narozeniny-s-priponou-jpg-ale-i-ldyby-to-priponiu-nemelo-tak-de-nic-nedeje
funguje ... ale toto:
http://ikrk.wz.cz/galerie/12-onecodfsgdhsyda-nejaky-delsi-test-mhhm-af/36-lenciny
uz ne ... jednoduchy zaver -> dlouhy text v nazvu obrazku projde, ale neprojde dlouhy text v nazvu galerie :)) pokusim se jest epohledat chybu ...

pripadam si trochu zmateny :/
hm, tak jsem zmateny jeste vic .... napr url:
http://ikrk.wz.cz/galerie/15-neco-jineho-vurlktere/88-neco
se mi jednou nacetla, jednou ne ...
abych rekl na rovinu tak zacinam mit pocit ze v rewriterule chyba asi neni ...

muj navrhovany poctup reseni: velmi zredukuj pocet rewrite pravidel (nektere jsou zbytecne skoro duplicitni! :) ... napr tyto:
RewriteRule ^(galerie)/([0-9]+)-[^/]+/([0-9]+)-[^/]+/?$ /Ikrk_new/index.php?page=galnahl&gal=$2&pic=$3#left-content [L]
RewriteRule ^(galerie)/([0-9]+)-[^/]+/([0-9]+)+/?$ /Ikrk_new/index.php?page=galnahl&gal=$2&pic=$3#left-content [L]
muzes upravit takto:
RewriteRule ^(galerie)/([0-9]+)-[^/]+/([0-9]+)[^/]*/?$ /Ikrk_new/index.php?page=galnahl&gal=$2&pic=$3#left-content [L]
atd...
)

pak bych zacal hledat nekde odznova chybu -> mam totiz pocit, ze to nejak striha server (asi execution time nebo neco takoveho :) ) ...
Ty jo tak už jsem na to přišel... :-)

Nejdřív jsem zjistil, že v php to nebylo, protože když jsem tam dal místo skriptu, co vytahuje obrázky z DB jen obyčejnej text, tak to pořád nefungovalo. Tak jsem tak dlouho odmazával části .htaccessu, až mi tam zbyly jen dva řádky :-)

Zakopanej pes byl v tom, že toto:
RewriteRule ^(galerie)/([0-9]+)-([^/]+)+/?$ /Ikrk_new/index.php?page=$1&gal=$2&title=$3 [L]

a toto:
RewriteRule ^(galerie)/([0-9]+)-[^/]+/([0-9]+)[^/]*/?$ /Ikrk_new/index.php?page=galnahl&gal=$2&pic=$3#left-content [L]

se nějak mlátilo... Tak jsem otočil pořadí a už se zdá, že to funguje... :-)
Každopádně jsem myslel, že to [L] na konci přeruší další příkazy, nebo co to dělá?

No, hlavně, že už to funguje, díky moc za ochotu!
hm, tak doufam ze jsem alespon trochu pomohl :))

jinak L by melo delat to, ze pro dane url uz zadne dalsi pravidla neplati ... ;)