Переписать с haccess старый URL с неизвестными подпапками в URL с только первой «подпапкой» из старого URL - PullRequest
0 голосов
/ 03 апреля 2020

Я пытаюсь сделать странное перенаправление в htaccess, но я не знаю, как это сделать.

У меня есть старые URL, такие как:

 1. www.oldsite.com/known-old-folder/unknown-subfolder-1
 2. www.oldsite.com/known-old-folder/unknown-subfolder-2/unknown-second-subfolder-1

я должен перенаправить соответственно на новые URL, такие как:

 1. www.newsite.com/known-new-folder/unknown-subfolder-1
 2. www.newsite.com/known-new-folder/unknown-subfolder-2

Я не хочу рассматривать «unknown-second-subfolder-1», если он присутствует.

Как я могу сделать это в htaccess? Я не знаю, что делать в моем RewriteRule , чтобы игнорировать "unknown-second-subfolder-1", если он присутствует.

Большое спасибо

Ответы [ 2 ]

0 голосов
/ 06 апреля 2020

Вы можете использовать это правило перенаправления в known-old-folder/.htaccess:

RewriteEngine On

RewriteCond %{REQUEST_URI} ^/known-old-folder/(.+) [NC]
RewriteRule ^ http://www.newsite.com/known-new-folder/%1 [L,NE,R=301]
0 голосов
/ 03 апреля 2020

Звучит довольно прямо. Вам необходимо реализовать перенаправление в соответствии со следующим правилом в конфигурации старого сайта:

RewriteEngine on
RewriteRule ^/?(?:[^/]+)/([^/]+)/? https://new.example.com/new/$1 [R=301]

Хорошая идея - начать с временного перенаправления 302 и изменить его только на постоянное перенаправление 301. позже, когда вы будете уверены, что все настроено правильно. Это предотвращает проблемы с кешированием при испытаниях ...

Эта реализация будет работать аналогично в конфигурации хоста http-серверов или внутри распределенного файла конфигурации (файл ".htaccess"). Очевидно, что модуль перезаписи должен быть загружен внутри http-сервера и включен на хосте http. Если вы используете распределенный файл конфигурации, вам нужно позаботиться о том, чтобы его интерпретация вообще была включена в конфигурации хоста и находилась в папке хоста DOCUMENT_ROOT.

И общее замечание: вы всегда должны предпочитать размещать такие правила в конфигурации хоста http-серверов, а не использовать распределенные файлы конфигурации (".htaccess"). Эти распределенные файлы конфигурации добавляют сложность, часто являются причиной непредвиденного поведения, их трудно отладить, и они действительно замедляют работу http-сервера. Они предоставляются только в качестве последнего варианта для ситуаций, когда у вас нет доступа к реальной конфигурации хоста http-серверов (читай: действительно дешевые поставщики услуг) или для приложений, настаивающих на написании своих собственных правил (что является очевидным кошмаром безопасности).

...