Autor | Zpráva | ||
---|---|---|---|
Sat@n Profil * |
#1 · Zasláno: 29. 6. 2008, 03:14:14
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 |
#2 · Zasláno: 29. 6. 2008, 09:02:22
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 |
#4 · Zasláno: 30. 6. 2008, 08:05:38
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 * |
#5 · Zasláno: 30. 6. 2008, 20:32:44
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 * |
#6 · Zasláno: 3. 7. 2008, 01:43:03
Str4wberry
Poradíš? |
||
Str4wberry Profil |
#7 · Zasláno: 3. 7. 2008, 07:37:21 · Upravil/a: Str4wberry
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 * |
#8 · Zasláno: 3. 7. 2008, 10:41:08
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(cs|sk|en|de|fr)?/?([^/]+)?/?$ ?lang=$1&id=$2 [L,QSA] |
||
Sat@n Profil * |
#9 · Zasláno: 3. 7. 2008, 23:13:22
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 * |
#10 · Zasláno: 4. 7. 2008, 00:26:39
Kajman_
No vida, takto to funguje :) Moc děkuju za pomoc. |
||
Časová prodleva: 16 let
|
0