Autor | Zpráva | ||
---|---|---|---|
Lukáš M Profil |
#1 · Zasláno: 26. 10. 2005, 19:27:53
zdravím,
s pomocí různých zdrojů jsem si "spatlal" pravidla pro přesměrování, můžu je sem napsat, můžu i popsat chyby, které vyrábějí, ale bylo to dosti nepřehledné (po 3 dlouhých odstavích jsem to vzdal), a tak bych raději požádal někoho znalého, zda by mi mohl pomoci s tímto pro profáka jistě jednoduchým "zadáním": 1. pokud není na začátku adresy "www.", doplnit jej tam 2. pokud není na konci adresy lomítko (a pokud jde opravdu o adresář a ne soubor), doplnit jej tam 3. adresu /bla-1/ zpracovat jako /index.php?rid=1 (id rubriky=1) 4. adresu blabla-4 zpracovat jako /index.php?rid=1&id=4 (id rubriky=1, id clanku=4) děkuju moc! regulární výrazi, potažmo mod_rewrite není zrovna můj šálek čaje. ;) |
||
Kajman Profil * |
#2 · Zasláno: 26. 10. 2005, 20:44:13
Možná by to mohlo být takhle nějak... ale 4. pravidlo mi v zadání připadalo nesmyslné, tak je tam jinačí :-)
RewriteEngine On RewriteBase / #1. RewriteCond %{HTTP_HOST} !^www\. RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301] #2.,3.,4. - vyskoci pokud vysledek existuje RewriteCond %{REQUEST_FILENAME} -F RewriteRule .* - [L] #2. RewriteRule ^(.*[^/])$ $1/ [R=301] #3. RewriteRule ^.*-([0-9]+)/?$ index.php?rid=$1 [L,QSA] #4. RewriteRule ^.*-([0-9]+)/.*-([0-9]+)/?$ index.php?rid=$1&id=$2 [L,QSA] |
||
Kajman Profil * |
#3 · Zasláno: 26. 10. 2005, 20:45:57
Jen se nesmíte divit, co to bude dělat, až na ty stránky přistoupíte přes ip :-) Ale to už je chyba v zadání :-)
|
||
Lukáš M Profil |
#4 · Zasláno: 26. 10. 2005, 21:21:40 · Upravil/a: Lukáš M
děkuji za radu, ale ještě to má nějaké mušky :(
např. 1. http://www.rekvalifikace-prace.cz/bla-1/blabla-1.html se přepíše na http://www.rekvalifikace-prace.cz/bla-1/blabla-1.html/ a vrátí 404 2. http://rekvalifikace-prace.cz/bla-1/blabla-1.html -> na http://www.rekvalifikace-prace.cz/bla-1/blabla-1.html/blabla-1.html/ -> 404 3. http://www.rekvalifikace-prace.cz/bla-1/ -> http://www.rekvalifikace-prace.cz/bla-1/ -> OK, funguje dokonale 4. http://www.rekvalifikace-prace.cz/bla-1 -> http://www.rekvalifikace-prace.cz/bla-1 -> OK (jen škoda, že se na konec nepřidá lomítko, aby to bylo naprosto stejné jako předchozí) 5. http://rekvalifikace-prace.cz/bla-1/ -> http://www.rekvalifikace-prace.cz/bla-1/ -> OK, funguje dokonale 6. http://rekvalifikace-prace.cz/bla-1 -> http://www.rekvalifikace-prace.cz/index.php/?rid=1 -> OK ale bez kýženého efektu coolURI :( 7. http://www.rekvalifikace-prace.cz/bla-5/bla-1/ -> http://www.rekvalifikace-prace.cz/bla-5/bla-1/ -> zobrazí totéž co http://www.rekvalifikace-prace.cz/bla-1/ namísto toho, aby to vrátilo 404 - ale to už by mělo jít ošetřit v php, pokud to tedy nejde přímo v mod_rewrite to, co tu popisuji je přesně fáze, do které jsem (i když s úplně jinými a poněkud kostrbatými pravidly) došel při svých "experimentech" :( a nechtěl to to rozepisovat s tím, že nová pravidla bude asi snadzší napsat :) pokud vás tedy mohu požádat o doladění? |
||
Kajman Profil * |
#5 · Zasláno: 26. 10. 2005, 22:01:11
No, tak druhé kolo střílení od boku :-)
To .html v zadání nikde nebylo. Z čehož první a poslední připomínky pramení. RewriteEngine On RewriteBase / #1. RewriteCond %{HTTP_HOST} !^www\. RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/%{REQUEST_FILENAME} [R=301] #2.,3.,4. - vyskoci pokud vysledek existuje RewriteCond %{REQUEST_FILENAME} -F RewriteRule .* - [L] #2. RewriteRule ^(.*[^/])$ $1/ [R=301] #3. RewriteRule ^.*-([0-9]+)/$ index.php?rid=$1 [L,QSA] #4. RewriteRule ^.*-([0-9]+)/.*-([0-9]+)\.html?$ index.php?rid=$1&id=$2 [L,QSA] |
||
Kajman Profil * |
#6 · Zasláno: 26. 10. 2005, 22:04:54
možná bude ještě třeba zaměnit [R=301] na [R=301,L]
A osobně pro testování používám 302, aby mi to nezůstalo v paměti prohlížeče. Po odladění vracím 301. |
||
Lukáš M Profil |
#7 · Zasláno: 26. 10. 2005, 22:40:58
omlouvám se, že jsem se tentokrát projevil jako taková lama, že nenapíšu ani správně zadání... :(
chyby v předchozím příspěvku jsem si dovolil očíslovat, abychom v nich měli jasno: 1. a 3. OK 2. , 5. a 6. vrací http://www.rekvalifikace-prace.cz/usr/www/clevernet/ds-1586/rekvalifik ace-prace.cz/www/bla-1/ a i když se to zobrazí správně, tak ta adresa přece jenom není to pravé :) 4. OK - jen je škoda toho lomítka, co chybí na konci, jde to nějak ošetřit? díky moc, zvláště jestli se se mnou pustíte i do třetího kola :) |
||
Kajman Profil * |
#8 · Zasláno: 26. 10. 2005, 22:44:03
RewriteEngine On
RewriteBase / #1. RewriteCond %{HTTP_HOST} !^www\. RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] #2.,3.,4. - vyskoci pokud vysledek existuje RewriteCond %{REQUEST_FILENAME} -f RewriteRule .* - [L] #3. RewriteRule ^.*-([0-9]+)/$ index.php?rid=$1 [L,QSA] #4. RewriteRule ^.*-([0-9]+)/.*-([0-9]+)\.html?$ index.php?rid=$1&id=$2 [L,QSA] #2. RewriteRule ^(.*[^/])$ $1/ [R=301,L] |
||
Lukáš M Profil |
#9 · Zasláno: 26. 10. 2005, 23:32:56 · Upravil/a: Lukáš M
pomalu se dostávám do fáze, kdy začínám mít pocit, že vás jen okrádám o čas a nikam to nevede :( přesto snažně prosím o další kola ;)
funguje: http://www.rekvalifikace-prace.cz/bla-1/blabla-1.html http://www.rekvalifikace-prace.cz/bla-1 nefunguje: http://www.rekvalifikace-prace.cz/bla-1/ http://rekvalifikace-prace.cz/bla-1/ http://rekvalifikace-prace.cz/bla-1 http://rekvalifikace-prace.cz/bla-1/blabla-1.html děkuji. |
||
Kajman Profil * |
#10 · Zasláno: 27. 10. 2005, 15:55:46
Tak to teda nechápu, pokud funguje http://www.rekvalifikace-prace.cz/bla-1 a negunguje http://www.rekvalifikace-prace.cz/bla-1/ tak by to s těmi pravidly jít nemělo. Zkusím se na to někdy časem kouknout a rovnou to i otestovat :-)
|
||
Lukáš M Profil |
#11 · Zasláno: 27. 10. 2005, 16:54:10 · Upravil/a: Lukáš M
Kajman
obrovské DÍKY! nevím, zda jsem skopal něco při kopírování já nebo se něco dělo na serveru, ale v současné podobě už mi to běhá. zdá se, že jste tu jediný, kdo do toho pořádně vidí a/nebo je ochoten se v těch regulárních výrazech hrabat a něco vykoumat. :) jste pro mne mág ;) děkuji a klaním se :) |
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0