[.htaccess] Ako zmenit tvar URL

Webdesign, HTML, CSS, Flash, PHP, ASP, .NET, JavaScript. Kritika www stránek na Smetišti.

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod palooo 6. 8. 2008 08:13

Mam tento funkcny kod:

Kód: Vybrat vše
RewriteRule link-(.*)-(.*)\.html link.php?id=$1&cc=$2


Avsak nechcem tie linky v tvare nieco-nieco.html ale v tvare nieco/nieco/

skusal som jednoducho nahradit - znakom / ale nefunguje mi to, viete mi poradit?
palooo
Junior
Uživatelský avatar

Odeslat příspěvekod gandor 6. 8. 2008 11:34

nikdy som to vlastnorucne nerobil, ale vygooglene riesenie na tento problem som uz mal...
Funkcia sa vola mod_rewrite() (a treba ju mat v .htaccess samozrejme)
pouzitie pozri na googly viac ti nepomozem....
gandor
Mírně pokročilý

Odeslat příspěvekod wojta 6. 8. 2008 16:39

Zkus něco takového:
Kód: Vybrat vše
RewriteRule ^(.*)/(.*)$  index.php?id=$1&cc=$2
C:\>ver
MS-DOS Version 5.00
wojta
Pokročilý
Uživatelský avatar

Odeslat příspěvekod palooo 6. 8. 2008 18:56

no tento tvar mi nefunguje, nemam problem to sprevadzkovat s akou kolvek koncovkou .html , .php atd... ale s tymi / to nechce vobec chodit
palooo
Junior
Uživatelský avatar

Odeslat příspěvekod mbing 6. 8. 2008 21:01

A co toto?
Kód: Vybrat vše
RewriteRule ^([^/]*)/(.*)$  index.php?id=$1&cc=$2


To je divné, oba regulární výrazy by měly fungovat.

palooo píše:nefunguje
Dokážeš to rozvést?
Nemám problémy s alkoholem, mám problémy bez něj.
mbing
VIP uživatel
Uživatelský avatar

Odeslat příspěvekod KillmanCZE 9. 8. 2008 22:57

Dovolim si pokracovat v tomto vlakne. ;-)

Udelal jsem si presmerovani, ale stale to neni podle mych predstav. Ted mi to z "neco.cz/tototunechci-abc" udela "neco.cz/main.php?page=abc". Da se nejak zbavit toho "tototunechci"?
Kód: Vybrat vše
RewriteRule ^tototunechci-(.*)$ main.php?page=$1
I am a signature virus. Please help me spread by copying me into your signature.
KillmanCZE
Mírně pokročilý
Uživatelský avatar

Odeslat příspěvekod mbing 10. 8. 2008 12:44

Dotaz moc dobře nechápu.

Kód: Vybrat vše
RewriteRule ^(.*)-(.*)$ main.php?page=$2
Nemám problémy s alkoholem, mám problémy bez něj.
mbing
VIP uživatel
Uživatelský avatar

Odeslat příspěvekod KillmanCZE 10. 8. 2008 14:16

Tak takhle jsem to urcite nemyslel. :-)

Chci, aby jsem mel link jen "neco.cz/abc" a z toho "neco.cz/main.php?page=abc". A to mi prave nejde udelat.
Kód: Vybrat vše
RewriteRule ^(.*)$ main.php?page=$1

Tohle je blbost. Z toho vyleze "neco.cz/main.php?page=main.php". Snad uz se to ted da nejak pochopit.
I am a signature virus. Please help me spread by copying me into your signature.
KillmanCZE
Mírně pokročilý
Uživatelský avatar

Odeslat příspěvekod mbing 10. 8. 2008 21:17

Kód: Vybrat vše
RewriteRule ^(.*)$ main.php?page=$1

neco.cz/abc => main.php?page=abc
neco.cz/main.php => neco.cz/main.php?page=main.php
Nemám problémy s alkoholem, mám problémy bez něj.
mbing
VIP uživatel
Uživatelský avatar

Odeslat příspěvekod KillmanCZE 10. 8. 2008 21:54

Diky, ze se se mnou trapis, ale uz sem psal, ze mi to takto nefunguje. :-(

neco.cz/abc => neco.cz/main.php?page=main.php
A vypise mi to smycka pri presmerovani.
I am a signature virus. Please help me spread by copying me into your signature.
KillmanCZE
Mírně pokročilý
Uživatelský avatar

Odeslat příspěvekod mbing 10. 8. 2008 22:16

Není nad to se odreagovat od Visual Basicu. :D

To zacyklení jsi měl oznámit dříve, ale mohlo mě to napadnout.

Kód: Vybrat vše
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^(.*)$ main.php?page=$1 [L,QSA]
Nemám problémy s alkoholem, mám problémy bez něj.
mbing
VIP uživatel
Uživatelský avatar

Odeslat příspěvekod KillmanCZE 11. 8. 2008 10:06

Myslel jsem, ze je to celkem jasne. :-)

Dekuji za pomoc. Uz to jede jak ma.
I am a signature virus. Please help me spread by copying me into your signature.
KillmanCZE
Mírně pokročilý
Uživatelský avatar

Odeslat příspěvekod mbing 11. 8. 2008 10:16

Není zač. 8-) Při tvé hodnosti bys měl mod_rewrite ovládat levou zadní. :-/ Chceš hodnost odebrat? 8-P
Nemám problémy s alkoholem, mám problémy bez něj.
mbing
VIP uživatel
Uživatelský avatar

Odeslat příspěvekod KillmanCZE 11. 8. 2008 12:42

Neee. Hodnost mi prosim nech. :-)

Jeste mam posledni dotaz.
Nekdy bude link vypadat "neco.cz/abc", nekdy zase "neco.cz/abc-def" a nekdy i "neco.cz/abc-def-ghi". A potrebuju, aby mi to podle situace delalo "main.php?page=abc(&id=def(&id2=ghi)). Jde to nejak elegantne vyresit? Napadla me jen tato prasecina. :D
Kód: Vybrat vše
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^(.*)-(.*)-(.*)$ main.php?page=$1&id=$2&id2=$3 [QSA,L]
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^(.*)-(.*)$ main.php?page=$1&id=$2 [QSA,L]
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^(.*)$ main.php?page=$1 [QSA,L]
I am a signature virus. Please help me spread by copying me into your signature.
KillmanCZE
Mírně pokročilý
Uživatelský avatar

Odeslat příspěvekod mbing 11. 8. 2008 13:40

mod_rewrite není všemocný. Více možností dává mod_rewrite s vkládáním skriptu v jazyce Perl. Jelikož máš pevně daný počet řetězců mezi pomlčkami, bude nejjednodušší použít mod_rewrite s vícenásobnými pravidly. Kdybys měl nekonečný počet řetězců mezi pomlčkami, o mod_rewrite s vkládáním skriptu v jazyce Perl by se dalo uvažovat.

Máš tam chybu, například při něco.cz/aaa-bbb by se aktivovalo 2. a 3. pravidlo nebo při něco.cz/aaa-bbb-ccc by se aktivovalo 1., 2. a 3. pravidlo a předpokládám, že nikdy nebudeš mít něco.cz/-- (nic mezi pomlčkami). ;)

Kód: Vybrat vše
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^([^-]+)-([^-]+)-([^-]+)$ main.php?page=$1&id=$2&id2=$3 [QSA]
RewriteRule ^([^-]+)-([^-]+)$ main.php?page=$1&id=$2 [QSA]
RewriteRule ^([^-]+)$ main.php?page=$1 [QSA,L]


Teď nevím jestli stačí jeden RewriteCond, jak jsem to udělal, nebo u každého RewriteRule. :roll:
Nemám problémy s alkoholem, mám problémy bez něj.
mbing
VIP uživatel
Uživatelský avatar

Další stránka

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků