Pár hete szembesültem azzal a problémával, hogy egy adott könyvtárba telepített scriptnek mennie kellett és helyébe csak egy sima index oldal került. 404-et nem akartam adni és errordocumentként sem akartam kiszolgálni az új index fájlt, így aztán maradt a rewrite. Ez a történet jó pár óráig feltartott, de két lépésben azért csak sikerült az alábbi kódokkal.
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) /mappa/ [L,R=301]
Amennyiben a kért mappa, vagy fájl nem létezik a szerveren, akkor érvénybe lép a szabály.
Ezzel eléggé boldog is voltam jó sokáig, azonban később sikerült felfedeznem olyan indexelt oldalt is, ahol a query string galibát okozott, hiszen a domain.hu/mappa/pelda.php?id=5 URL-ből a rewrite domain.hu/mappa/?id=5 URL-t kreált.
Szerencsére ezt a gondot azért sokkal gyorsabban orvosolni tudtam.
RewriteCond %{query_string} .
RewriteRule (.*) http://www.domain.hu/mappa/$1? [R=301,L]
Így végül minden korábbi URL szép. 301-gyel adta vissza az új oldalt.
Remélem spóroltam ezzel a poszttal némi fejfájást.