Назад | Перейти на главную страницу

Как перенаправить определенные страницы в htaccess, а все остальные перенаправить на домашнюю страницу?

Как мне отправить 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]