Autor | Zpráva | ||
---|---|---|---|
DJ Miky Profil |
#1 · Zasláno: 4. 6. 2006, 12:46:44
Zdravím,
zkouším na svém webu udělat mod_rewrite, aby odstraňoval (= přesměrovával 301 na adresu bez nich) znaky jako tečku, čárku, závorky,... na konci adresy (např. když někdo napíše odkaz na konci věty a udělá se odkaz i s tou tečkou). Nějak se mi to ale nedaří... Nevíte někdo, jak to udělat? Děkuji za návrhy. |
||
Anonymní Profil * |
#2 · Zasláno: 4. 6. 2006, 13:13:02
|
||
DJ Miky Profil |
#3 · Zasláno: 4. 6. 2006, 18:07:57
Díky, trochu jsem to upravil a funguje to, až na případ, kdy jsou za adresou tečky:
adresa. - funguje adresa.. - přepne se do vyššího adresáře adresa... - skončí 403 Forbidden To znamená, že to asi interpretuje ty tečky (. = akt. adresář, .. = nadřazený adresář atd.) - jak na to? Pravidlo jsem upravil takto: RewriteRule ^(.*)([\.\?\),!"'])+$ /$1 [R=301,L] (to původní nefungovalo) |
||
Kajman_ Profil * |
#4 · Zasláno: 4. 6. 2006, 21:33:02
A odkomentoval jste RewriteBase a správně nastavil (asi na /)?
Uvedený příklad jsem se snažil řádně otestovat a fungoval, jak je tam popsáno - tedy bez problému odstranil dvě tečky na konci jedním krokem. |
||
DJ Miky Profil |
#5 · Zasláno: 5. 6. 2006, 16:35:12 · Upravil/a: DJ Miky
zkoušel jsem to s RewriteBase i bez něj, stejný výsledek - nejde to.
Při zadání absolutní adresy do RewriteBase server nahlásí 500 ISE. To samé dělá i na původní verzi příkladu (bez úprav). |
||
Kajman_ Profil * |
#6 · Zasláno: 5. 6. 2006, 20:22:19
Při zadání absolutní adresy do RewriteBase server nahlásí 500 ISE.
Absolutní adresy? Co tam dáváte? Nevím, nějak se mi tomu nechce věřit, radši jsem to teď ještě testoval na pár strojích a funguje to bez problémů. #obsah pro .htaccess umístěný v kořenu webu RewriteEngine On RewriteBase / RewriteCond %{QUERY_STRING} ^(.*[^\.\?\),!-"'])[\.\?\),!-"']+$ RewriteRule ^(.*)$ $1?%1 [R=301,L] RewriteCond %{REQUEST_FILENAME} !-F RewriteRule ^(.*[^\.\?\),!-"'])([\.\?\),!-"'])+$ $1 [R=301,L] Je možné, že to nefunguje, ale prostě se mi tomu nechce moc věřit ;-) |
||
DJ Miky Profil |
#7 · Zasláno: 5. 6. 2006, 21:18:16 · Upravil/a: DJ Miky
Opravdu pořád nefunguje, pořád stejný problém... Asi se na to vykašlu... Ale díky za Váš čas.
S RewriteBase / nebo bez RewriteBase, pořád to samé. Regulární výraz jsem zkoušel taky už asi 10krát přepisovat, bezvýsledně... Ještě to zkusím otestovat na jiném Apache (1.3 a 2.2). EDIT 21:25 - tak na Apache 1.3 ten samý problém: /neco/neco/.. - přesměruje se na /neco/ /neco/neco.html.. - tohle se pro změnu nepřepíše vůbec |
||
Kajman_ Profil * |
#8 · Zasláno: 5. 6. 2006, 22:24:03
/neco/neco/.. - přesměruje se na /neco/
To je správně... to by měl udělat už sám prohlížeč. A kde ty pravidla uvádíte v .htaccess nebo rovnou v konfiguráku apache? Tam by samozřejmě RewriteBase němělo co dělat. |
||
DJ Miky Profil |
#9 · Zasláno: 7. 6. 2006, 11:09:18
Kajman_
Můžete mi vysvětlit, jaktože je správně přesměrování /neco/neco/.. na /neco/? Díky. Vše dávám do .htaccess. |
||
Kajman_ Profil * |
#10 · Zasláno: 7. 6. 2006, 11:59:13
Můžete mi vysvětlit, jaktože je správně přesměrování /neco/neco/.. na /neco/? Díky.
http://www.faqs.org/rfcs/rfc2396.html 5.2 6) f) If the buffer string ends with "<segment>/..", where <segment> is a complete path segment not equal to "..", that "<segment>/.." is removed. |
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0