Autor Zpráva
radekt
Profil
Ahoj,
nahradil jsem v názvech souborů a složek podtržítka za pomlčky. Našel jsem, jak přesměrovat zastaralé odkazy s podtržítky z jiného webu:

RewriteEngine On
RewriteRule ^([^_]*)_([^_]*_.*) $1-$2 [N]
RewriteRule ^([^_]*)_([^_]*)$ /$1-$2 [L,R=301]

Nepodařilo se mi ale zprovoznit ani nikde najít i přesměrování složek, tedy aby se tvar:

web/slozka_1/soubor_1

přesměroval na:

web/slozka-1/soubor-1

Ta hloubka může být libovolná, např.:

web/slozka_1/podslozka_1/soubor_1

atd.

Nevíte někdo?
Díky
Kajman
Profil
Snad jen v prvním pravidlem za druhou závorkou by mohl být dolar a v druhém přesměrování mít navíc flag NE, jinak by to na první pohled mělo fungovat. Pro testování bude lepší 302.

RewriteEngine On
RewriteRule ^([^_]*)_([^_]*_.*)$ $1-$2 [N]
RewriteRule ^([^_]*)_([^_]*)$ /$1-$2 [L,R=302,NE]

Pravidla musí být zapnutá pro celý web a nesmí existovat vlastní pravidla ve slozka_1.
radekt
Profil
Kajman:
Děkuji moc! Přesně to jsem potřeboval.

Před chvílí jsem objevil ještě další kód:
RewriteEngine On
RewriteRule ^([^_]*)_(.*)$ /$1-$2 [R=301,L] 

ten také funguje.
Kajman
Profil
Ve verzi z [#3] se ale provede tolik přesměrování, kolik tam bylo podtržítek.

Správně by asi mělo být
RewriteRule ^([^_]*)_([^_]*_.*)$ $1-$2 [L]
RewriteRule ^([^_]*)_([^_]*)$ /$1-$2 [L,R=302,NE]

Protože pokud se změní url, tak se pravidla prochází znovu (interně) a flag N netřeba (ten asi zlobil a násobil cestu).
radekt
Profil
Kajman:
Otestoval jsem, použiji tedy doporučenou variantu #4. Ještě jednou díky.
Kajman
Profil
Po otestování (klidně až za pár dní) změnte 302 na 301.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: