То, которые перенаправляют правило, было бы я использовать для перенаправления всех страниц под olddomain.example
быть перенаправленным к newdomain.example
?
Сайт имеет полностью другую структуру, таким образом, я хочу, чтобы каждая страница под старым доменом была перенаправлена к новой доменной индексной странице.
Я думал, что это сделает (в соответствии с olddomain.example базовым каталогом):
RewriteEngine On
RewriteRule ^(.*)$ http://newdomain.example/ [R=301]
Но если я перешел к olddomain.example/somepage
Я перенаправляюсь к newdomain.example/somepage
. Я ожидаю перенаправление только к newdomain.example
без суффикса страницы.
Как я не пускаю последнюю часть?
Может быть так:
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^OLDDOMAIN\.com$ [NC]
RewriteRule ^(.*)$ http://NEWDOMAIN.com [R=301,L]
Просто чтобы уточнить, после удаления редиректа хостинга, который был на пути, мое оригинальное решение также работает:
RewriteEngine On
RewriteRule ^(.*)$ http://newdomain.com/ [R=301]
С точки зрения удобства использования, было бы лучше, если бы вы также отправляли путь с запросом (т.е.., что у вас есть на данный момент) и дать вашему новому сайту разобраться с этим:
Вы искали "/продукты".
К сожалению, эта страница исчезла. Хотели бы вы вместо этого посетить "/new_products"?
(а еще лучше сделать это автоматически)
Это, конечно, много кодирования и эвристики для более крупного сайта, но, на мой взгляд, это окупится с точки зрения удовлетворенности пользователей (когда ваша тщательно сохраненная закладка продукта вашей мечты просто приведет вас на первую страницу newdomain.com, это расстраивает)
.Это ошибка в старых версиях apache (и, следовательно, mod_rewrite), где префикс пути добавлялся к переписанному пути, если он изменялся. Смотрите здесь
Я думаю, что это было исправлено в apache2 V2.2.12, есть специальный флаг, который нужно использовать, который я добавлю сюда, когда найду его, (я думаю, это NP для No Path)
RewriteRule ^(.*)$ http://newdomain.com/ [??]