Как мне отправить 301 конкретную страницу на новый URI домена, а затем все остальные страницы просто отправить на домашнюю страницу?
пример
-- Specific pages I want to move --
Redirect 301 /contact.htm https://newdomain.com/contact
Redirect 301 /about.htm https://newdomain.com/about/
Redirect 301 /team.htm https://newdomain.com/team/
-- All other pages, just redirect to the homepage --
Redirect 301 /whatever.htm https://newdomain.com/
Redirect 301 /blah.htm https://newdomain.com/
Чтобы сопоставить все оставшиеся страницы и перенаправить на домашнюю страницу нового сайта, вам необходимо использовать RedirectMatch
директива (также из mod_alias). Например:
RedirectMatch 301 .* https://newdomain.com/
В RedirectMatch
директива использует регулярное выражение для соответствия URL-адресу запроса, тогда как Redirect
использует простой соответствие префикса.
Вы не можете использовать Redirect
директива здесь, которая соответствие префикса, потому что при перенаправлении, таком как Redirect / https://newdomain.com/
будет соответствовать всем остальным URL-адресам, он будет перенаправлен на тот же URL-путь в newdomain.com
. например. /whatever.htm
перенаправит на https://newdomain.com/whatever.htm
(который предположительно не существует - хотя на самом деле это может быть хорошо - поскольку массовые перенаправления на домашнюю страницу в любом случае будут рассматриваться Google как soft-404, а настоящий 404 может быть более информативным для пользователей).
Чтобы добавить, это предполагает, что newdomain.com
размещен на другом сервере, в противном случае вы получите цикл перенаправления.
htaccess работает в хронологическом порядке, поэтому вам нужно писать правила сверху вниз.
Определенные страницы сначала, чем последняя строка будут правилом «другие страницы на домашней странице».
В примере первое правило перенаправляет только домашнюю страницу - например, в случае /index.html последняя строка будет запущена, если другие правила не привязаны к URL-адресу - как и другие страницы, которые не определены выше в htaccess. Вы можете использовать весь код, потому что он готов к использованию.
Options +FollowSymlinks
RewriteEngine On
RewriteBase /
### 301 redirect ###
#old homepage to new homepage
RewriteRule ^$ http://yourhomepage.com/ [L,R=301]
#specific pages to new specific pages
RewriteRule ^contact.html?$ http://yourhomepage.com/contact [L,R=301]
RewriteRule ^index.html?$ http://yourhomepage.com/ [L,R=301]
#other pages to the new website's homepage
RewriteRule ^(.*)$ http://yourhomepage.com/ [L,R=301]
Вы должны использовать RewriteRule для всех несовпадающих URL-адресов. Вы также можете использовать mod_rewrite для всех предыдущих перенаправлений.
Что-то вроде этого, вероятно, сработает.
RewriteRule ^(.*)?$ /index.html [R=301,L]