Per un sito che ho appena rilanciato, vorrei un htaccess redirect cattura tutti i non-esistente sottopagine sotto /blog/
basta scegliere /blog/
e non è un 404 (così /blog/old-page/
sarebbe solo un redirect a /blog/
). È importante, tuttavia, che ancora esistenti sottopagine (come /blog/new-page/
) non vengono reindirizzati. E ' anche meglio se questo può essere nella root il file htaccess (non nella sottocartella). Mi sembra di aver provato di tutto, ma non riesco a trovare una soluzione per questo, senza fare redirect per ogni singola vecchio sottopagina (ci sono >100)!
Spero che qualcuno possa aiutare.
Se tutti i vecchi Url della pagina erano di forma /blog/<old-page>/
e precedentemente mappato directory fisiche (da cui una DirectoryIndex
il documento è stato servito), allora si può fare qualcosa di simile che utilizza mod_rewrite in cima principale .htaccess
file:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(blog/)[^/]+/$ /$1 [R=301,L]
$1
in sostituzione di una stringa è un riferimento al primo gruppo di cattura in RewriteRule
modello, vale a dire. “blog“. Questo, semplicemente, salva la ripetizione.
A parte: Giusto per ripetere la preoccupazione espressa nei commenti. Per quanto riguarda il SEO e gli utenti, questo è probabilmente peggio di un 404 personalizzata risposta che spiega la mancanza di pagina(s). I motori di ricerca sarà probabilmente vedere questo (molti-a-uno redirect) come un soft-404 e comunque gli utenti sono più probabilità di essere solo "confuso" (e di rimbalzo) quando vedono un contenuto diverso da ciò che si aspettano. Non c'è davvero alcun sostituto per il "vecchio" al "nuovo" (one-to-one) redirect 301.