Htaccess pour rediriger de l'absence de sous-pages

0

La question

Pour un site que j'ai juste relancé, je voudrais une redirection htaccess attraper tous les non-existant en vertu de la sous-pages /blog/ juste à point pour /blog/ et pas un 404 (donc /blog/old-page/ serait tout simplement rediriger vers /blog/). Il est important, cependant, que les sous-pages (comme /blog/new-page/) ne sont pas redirigés. Il est également préférable si cela peut être dans le fichier htaccess de la racine (pas dans le sous-dossier). Je me sens comme j'ai tout essayé, mais impossible de trouver une solution pour cela sans faire des redirections pour chaque ancien sous-page (il y a >100)! J'espère que quelqu'un peut vous aider.

.htaccess
2021-11-21 15:38:40
1

La meilleure réponse

2

Si toutes vos anciennes Url de page sont de la forme /blog/<old-page>/ et déjà mappés à des répertoires physiques (à partir de laquelle un DirectoryIndex le document a été signifié), alors vous pouvez faire quelque chose comme ce qui suit à l'aide de mod_rewrite dans le haut de la racine de votre .htaccess fichier:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(blog/)[^/]+/$ /$1 [R=301,L]

$1 dans la substitution de chaîne est une référence arrière à la première capture d'un groupe dans le RewriteRule modèle, c'est à dire. “blog/“. Ce gain de répétition.

De côté: Juste pour répéter la préoccupation exprimée dans les commentaires. Avec ce qui concerne le RÉFÉRENCEMENT et les utilisateurs, ce qui est probablement pire qu'une 404 personnalisée de la réponse qui explique l'absence de page(s). Les moteurs de recherche sera probablement voir ce a beaucoup à une redirection), comme un doux-404 de toute façon et que les utilisateurs sont plus susceptibles de tout simplement être "confondu" (et de rebond) quand ils voient un contenu différent de ce qu'ils attendent. Il n'y a vraiment pas de substitut pour les "anciens" aux "nouveaux" (one-to-one) des redirections 301.

2021-11-25 11:06:08

Dans d'autres langues

Cette page est dans d'autres langues

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................