Htaccess для перенаправления несуществующих подстраниц

0

Вопрос

Для веб-сайта, который я только что перезапустил, я хотел бы, чтобы перенаправление htaccess перехватывало все несуществующие подстраницы под /blog/ чтобы просто указать на /blog/ и не 404 (так что /blog/old-page/ просто перенаправил бы на /blog/). Однако важно, чтобы все еще существующие подстраницы (такие как /blog/new-page/) не перенаправляются. Также лучше, если это может быть в корневом файле htaccess (а не во вложенной папке). Я чувствую, что перепробовал все, но не могу найти решение для этого, не делая перенаправления для каждой старой подстраницы (их >100)! Я надеюсь, что кто-нибудь сможет помочь.

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

Лучший ответ

2

Если бы все ваши старые URL-адреса страниц имели форму /blog/<old-page>/ и ранее сопоставленные с физическими каталогами (из которых DirectoryIndex документ был подан), то вы можете сделать что-то вроде следующего, используя mod_rewrite в верхней части вашего корня .htaccess файл:

RewriteEngine On

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

$1 в строке подстановки находится обратная ссылка на первую группу захвата в RewriteRule шаблон, т. е. “блог/“. Это просто экономит повторение.

В стороне: Просто чтобы повторить озабоченность, выраженную в комментариях. Что касается SEO и пользователей, это, скорее всего, хуже, чем пользовательский ответ 404, который объясняет отсутствие страницы(страниц). Поисковые системы, скорее всего, увидят это (перенаправление "много к одному") как софт-404 в любом случае, и пользователи, скорее всего, просто "запутаются" (и отскочат), когда увидят контент, отличный от того, что они ожидают. На самом деле нет замены "старому" перенаправлению на "новый" (один к одному) 301.

2021-11-25 11:06:08

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................