Autor Zpráva
Sat@n
Profil *
Ahoj,

měl bych takový dotaz:

Používám následující pravidla v .htaccess

# index.php?lang=cs
# /cs/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ ?lang=$1

# index.php?id=o-firme
# /o-firme/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ ?id=$2


Chci udělat, abych měl možnost přepisovat za 1. lomítkem jak $lang tak $id - jedna z nich je vždy zadána, bohužel mi to nefunguje, protože si server přiřazuje index.php?id=neco vždycky do $lang, zjistil jsem to že když si nechám vypsat echo $_GET['id'] a $id v adrese vždy je, tak to nevypíše, ale $_GET['lang'] to vypíše, ale to je nesmysl, je to jen kvůli tomu že je v .htaccess pravidlo pro $lang zapsáno před tím pro $id.

Mohl by mi někdo poradit, jak mít pravidlo v .htaccess funkční?

Děkuji Vám.
Str4wberry
Profil
RewriteRule ^(.*)/(.*)$  index.php?lang=$1&id=$2
Sat@n
Profil *
Str4wberry
Bohužel, toto řešení nefunguje, pravděpodobně si špatně pochopil můj problém.

Jde mi o to že jednou přepisuji:

www.adresa.cz/index.php?id=o-firme
www.adresa.cz/o-firme/

a

www.adresa.cz/index.php?lang=cs
www.adresa.cz/cs/


a potom to ještě dále kombinuju, ale to mi funguje, jde mi o to že v .htaccess mi funguje řešení vždy jen pro to, co je zapsáno v .htaccess víše
# index.php?lang=cs
# /cs/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ ?lang=$1

# index.php?id=o-firme
# /o-firme/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ ?id=$2


tady mi funguje přepis lang, ale už nefunguje přepis samostatného id, protože je zapsán až jako druhý...

Můžeš mi prosím ještě zkusit poradit? Díky.
Str4wberry
Profil
Já to pochopil. Ale Ty ne. Představ si to — jak to má mod_rewrite poznat? Jak má poznat stav, kdy dle ^([^/]+)/?$ shodné adrese má podstrčit různé adresy?

Podstrč to tedy „natvrdo“ — tedy „cs“ na „index.php?lang=cs“, případně to omez v „[^/]+“.

Mé řešení by fungovalo v případě adresy „www.adresa.cz/cs/o-firme“.
Sat@n
Profil *
Str4wberry
Ano přesně tak, tvé řešení funguje pro www.adresa.cz/cs/o-firme/ , ale jde tedy udělat aby jednou mod_rewrite přepisoval www.adresa.cz/cs/ a podruhé www.adresa.cz/o-firme/ ??

Vím, že to nemá jak rozpoznat a proto bere v potaz první zapsané pravidlo v .htaccess, proto se ptám, jde to rozpoznat a udělat viz. výše??

Děkuji.
Sat@n
Profil *
Str4wberry
Poradíš?
Str4wberry
Profil
Sat@ne, vždyť jsem už poradil [#4].

Podstrč to tedy „natvrdo“ — tedy „cs“ na „index.php?lang=cs“, případně to omez v „[^/]+“.
Kajman_
Profil *
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(cs|sk|en|de|fr)?/?([^/]+)?/?$ ?lang=$1&id=$2 [L,QSA]
Sat@n
Profil *
Str4wberry
To ano, ale tvoje řešení nefunguje tak jak by mělo, protože jakmile mám chci udělat $_GET['lang'] a jsem na adrese www.adresa.cz/o-firme/ tak mi jako lang bere o-firme (přitom je to ID) no a pak mi nefungujou stránky kvůli tomu že ty údaje používám do dotazu na databázi.

Je to vlastně jediná situace, při které to nefunguje, protože při www.adresa.cz/cs/o-firme/ a www.adresa.cz/cs/ to funguje tak jak má.

Bohužel nerozumim tomu, jak myslíš:
Podstrč to tedy „natvrdo“ — tedy „cs“ na „index.php?lang=cs“, případně to omez v „[^/]+“.

Chápeš už můj problém?

Děkuji.
Sat@n
Profil *
Kajman_
No vida, takto to funguje :)

Moc děkuju za pomoc.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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