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