mod_rewrite a hezké url díl II
V minulém dílu článku mod_rewrite a hezké url jsem Vám ukázal pár jednoduchých přepisů pro domény nižších řádů, přesměrování na url s / bez www, zpětné přesměrování ze subdomény na doménu a na konec samotný přepis hezkých url pro jednu a dvě proměnné. V druhém dílu seriálu se pokusím popsat základní problémy, které mohou nastat s použitím mod_rewrite a uvedu některé další příklady.
Komentáře k článku:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/([^/]+)?/?$ ?clanek=$1&typkraje_o=$2RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/ukazclanek])/([^/]+)?/?$ ?clanek=$1&id_cl=$2ale vzdy funguje pouze jeden. nejak se to vzajemne prepisuje, chtel jsem se zeptat, jak se to ma jednoznacne rozlisit tak, aby se vzdy poznalo o co se jedna.jsou to totiz uplne stejne Rule o 2 promennych, lisici se pouze o posledni promennou.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/([^/]+)?/?$ ?clanek=$1&typkraje_o=$2 RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/([^/]+)?/?$ ?clanek=$1&id_cl=$2
{ header("Location: http://neco.cz/$_GET['page']"); }ale teď tak trochu vařím z vody... snad to jde takhle zapsat, a snad to bude i fungovat :lol: na malém webu by to mělo jít, ale na složitějších stránkách by se to aplikovalo dost složitě...co se týče pozic ve vyhledávačích, tak o ně určitě nepřijdeš - budeš mít 2 duplicitní adresy pro jednu stránku, takže tu, co už zaindexovaly si pamatovat budou, a jakmile narazí na novou adresu, tak si zapamatují tu. a účel těchto "hezkých uri" jsou právě pozice, a je to osvěčené :smile:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^veterinarni-ordinace-kraj/([^/]+)?/?$ ?clanek=veterinarni-ordinace-kraj&typkraje_o=$1 [L,QSA]RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^clanky-o-veterine/clanek([^/]+)?/?$ ?clanek=clanky-o-veterine&id_cl=$1 [L,QSA]odskouseno, fungujici :-)
Snad jsem to napsal dobře :)
Mel bych ale mensi pripominku k tomuto clanku..
Prepis:
R-ewriteRule ^([^/]+)/([^/]+)/([^-/]+)/([^/]+)/([^/]+)-?/?/?/?/?$ ?page=$1&arg1=$2-&arg2=$3&arg-3=$4&arg4=$5
vi-dim sice poprve, jiste funguje, ale zda se mi pomerne neprakticky.
Ja pouzivam prepis z:
http://www.adres-a.dot/neco/neco/neco-/neco/
na: index.php?url=neco/n-eco/neco/neco/
a pak jen jednoduse jednu promennou rozdelim na casti, ktere pri vzestuonem cteni ridi beh aplikace. Vysledek je stejny, jen to neni omezeno a je vse v jedne promenne.
to řešení /neco.php na /neco/ je pěkné, nikde jinde jsem ho nenašel.Je tu návod, jak přesměrovat adresu, která nemá na konci lomítko na tu s lomítkem.
Jak to ale udělám naopak?Chtěl bych:
www.web.cz/neco.php přesměrovat na www.web.cz/neco
a zároveň www.wb.cz/neco/ přesměrovat na www.web.cz/necoPředem děkuju za radu. :)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ $1.php [L]// osetreni pro jednu promennou za otaznikem
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/([^/]+)/?$ $1.php?stranka=$2 [L]Děkuji
Options +FollowSymlinks
DirectoryIndex index.phpRewriteEngine on
RewriteBase /RewriteCond %{HTTP_HOST} ^moje.forum.mike.treba.cz
Rewri-teRule ^(.*)$ /forum%{REQUEST_URI} [QSA,L,NC]
RewriteCond %{HTTP_HOST} ^moje.forum.mike.treba.cz
Rewri-teRule ^$ /forum/index.php [QSA,L,NC]
Mam hlavni web, pak podweb a potrebuji se odkazem dostat do slozky s podwebem takze by melo stacit nasadit neco jakoRewriteBase /podweb ci /podweb/ a bylo by.. ale kulovy
snažím se už poměrně dlouho ale pořád se mi nedaří, aby automaticky přidávalo / na konec urlRewriteEngine OnRewriteRule ^index.php$ /nase-www/$1 [R=301]RewriteCond %{REQUEST_URI} !.[[:alnum:]]+$
RewriteRule ^(.+[^/])$ /$1/ [R=301]RewriteRule o-nas/$ /nase-www/?a=1web by měl mít strukturu http://mojedomena.cz/nase-www/a pokud si kliknu na odkaz v menu na http://mojedomena.cz/nase-www/o-nas tak mi tam to poslední lomítko nedá :(
http://speedy-up.yw.sk/viewer.php?file=dmrdo4ytmrjzdymmgknm.jpgteraz :http://speedy-up.yw.sk/dmrdo4ytmrjzdymmgknm.jpgvsetko fakcí ... len sa chcem spytat ze ci sa da nejako zrusit to ze mám napr. tools.php a ja to chcem zmenit na tools ... DAKUJEM za odpoved ... %6
RewriteRule ^(.*).html /viewer.php?file=$1
RewriteRule ^down-(.*) /download.php?file=$1
RewriteRule ^links-(.*) /links.php?file=$1
RewriteRule ^mail-(.*) /mail.php?file=$1
RewriteRule ^user-gallery-(.*) /user_gallery.php?album=$1
RewriteRule ^gallery-page-(.*) /gallery.php?p=$1
RewriteRule ^del-(.*) /remove.php?key=$1
RewriteRule ^tools-(.*) /tools.php?act=$1
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ viewer.php?file=$1Dakujem %0
Toto mám v .htaccess
Děkuji a radu.
Rewritebase /
# pridani / na konec
RewriteCond %{REQUEST_URI} !.[[:alnum:]]+$
RewriteRule ^(.+[^/])$ /$1/ [R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ ?stranka=$1 [L]RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/([^/]+)?/?$ ?stranka=$1&kategorie=$2 [L]
Jeden i dva parametry mi funuji, co mi ale nejde je pridavani lomitka na konec (www.server.cz/faq -> www.server.cz/faq/Diky za radu
RewriteBase /
RewriteRule ^(.*)$ $1.php [L,QSA]
moj ciel je mat terbarz taketo linky, odkazujem na www.mojadomena.sk/onas.php
a chcel by som to mať na www.mojadomena.sk/o-nasĎakujem ti za pomoc.
mojadomena.sk/onasby měl být vidět tuten soubor:
mojadomena.sk/onas.php
RewriteEngine On
RewriteRule ^index.php$ http://auto.mounttain.net/$1 [R=301]Options -Indexes# mujweb.cz/?page=neco > mujweb.cz/neco/
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ ?page=$1RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/([^/]+)?/?$ ?page=$1&page2=$2RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/([^/]+)/([^/]+)?/?/?$ ?page=$1&page2=$2&page3=$3RewriteCond %{REQUEST_URI} !.[[:alnum:]]+$
RewriteRule ^(.+[^/])$ /$1/ [R=301]
/clanek.php -> /clanek/z indexu se na stránku odkazuji takto: href="./sport.php"
chtel by jsem poté zobrazovat www.mojestranka/sport/
ale za boha se nedarí a pořád tam mám www.mojestranka/sport.phpvyzkousel jsem vsechny kody co jsou tady a pořád nic :(
velice zajimavy clanek, ktery me primnel trochu se postourat ve svych strankach. Stranky jsou staticke, pouzivajici klasickou priponu html. Dle Vase prikladu mi to nyni funguje ve tvaru www.domena.cz/produkty/ ovsem , chtel bych docilit hlubsi struktury www.domena.cz/produkty/typ-produktu/produkt/ coz by odpovidalo variante se 4 promennymi. Ja si ale zadne parametry nepredavam,protoze nepouzivam php. Lze takoveto struktury vubec docilit u statickych stranek? Lamu si s tim hlavu, ale nemohu se posunout dal.Dekuji za pomoc
RewriteRule ^index.html$ http://onecreativeperson.com/$1 [R=301]
# stranka.com/nieco.html > stranka.com/niecoRewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html
Čo všetko musím urobiť, aby mi to fungovalo na 100%? Treba niečo meniť aj v zdrojom html kóde, trebars presmerovania, alebo to urobí automaticky?Ďakujem za odpoveď.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ $1.html [L]což vlastně udělá jen to, že při zadání www.neco.cz/stranka/ se reálně načte soubor www.neco.cz/stranka.htmlžádné přesměrování, ty totiž mají tendenci blbnout. akorát odkazy v html pak musíš všude uvádět jako "www.neco.cz/podstranka/"
když už se ptáš :-) pokud můj web doporučíš známym, budu rád :-)
moj .htaccess vypada takto:# defaultny startovaci subor
DirectoryIndex index.php index.html start.html
RewriteEngine on
Options +FollowSymlinks####### Presmerovanie na verziu domény s www ######
RewriteCond %{HTTP_HOST} ^domena.sk
RewriteRule (.*) http://www.domena.sk/$1 [R=301,QSA,L]######## PEKNE URL
####http://mike.treba.cz/mod_rewrite-a-hezke-url-dil-ii/
RewriteBase /RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ ?arg1=$1RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/([^/]+)?/?$ ?arg1=$1&arg2=$2RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/([^/]+)/([^/]+)?/?/?$ ?arg1=$1&arg2=$2&arg3=$3### vynimky peknych url na adresare
RewriteRule ^admin/.*$ - [PT]
RewriteRule ^(.*)/$ $1 [R=301,QSA,L]
mělo by stačit nahrát .htaccess se stejným přepisem hezkých url do toho podadresáře a akorát přidat RewriteBase /stasa2023/ hned za RewriteEngine On. a jinak určitě doporučuji testovat i na localhostu.
Mám to takto:
RewriteEngine on
RewriteBase /stasa2023/
RewriteRule ^([A-Za-z0-9-]+).(html)?$ /?stasa=$1 [L,QSA]A co mi prosím doporučíte na localhost? Něco jednoduché? :-)
Asi to odladím na local a pak jen překopíruji. Web nemá admin, vše dělám ručně, jen potřebuji kontrolovat jak vypadají ceníky než to tam nakopíruji.
Děkuji Vám moc
RewriteBase /stasa2023/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$ ?stasa=$1 [L,QSA]pak to udělá url např. /stasa2023/kontakt/, a zobrází se /stasa2023/?stasa=kontakt, tedy $_GET['stasa'] == 'kontakt'zkusil bych s i bez rewrite base.
Přidat komentář