301 поведение перенаправления в системе drupal
Я переношу старый сайт на более новый, который использует Drupal. В рамках этого я пытаюсь настроить 301 перенаправление на новые страницы, но получаю неожиданное поведение. Я добавил следующую строку в свой файл .htaccess:
redirect 301 /redirect.html http://www.example.com/newpage
К сожалению, происходит то, что я попадаю в:
http://www.example.com/newpage?q=redirect.html
Который, конечно, загружается неправильно. Есть какие-нибудь мысли?
4 answers
Итак, после небольшого поиска я нашел ответ здесь. Он похож на danlefree, но немного отличается.
<IFModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
# custom redirects
RewriteRule ^redirect\.html$ http://www.mysite.com/newpage [R=301,L]
# end custom redirects
...
</IFModule>
Похоже, что эта работа выполнена.
Забудьте .htaccess.
Использовать глобальное перенаправление . Это дает вам следующее:
- Проверяет текущий URL-адрес на наличие псевдонима и делает 301 перенаправление на него, если он не используется.
- Проверяет текущий URL на наличие завершающей косой черты, удаляет ее, если она присутствует, и повторяет проверку 1 с новым запросом.
- Проверяет доступ к URL-адресу. Если у пользователя нет доступа к пути, перенаправление не выполняется. Это помогает избежать раскрытия частных узлов с псевдонимами.
Это немного упрощает миграцию вашего веб-сайта и, вероятно, самое главное, упрощает поиск того, что именно перенаправляется и куда. (так как для этого есть пользовательский интерфейс)
Бонус ( представь, что здесь появляется клиппи)
Похоже, вы создаете что-то похожее на чистые URL-адреса. Я думаю, что вас может заинтересовать pathauto.
Другие ваши правила перезаписи мешают.
Вместо этого попробуйте выполнить следующее:
RewriteEngine on
RewriteRule ^/redirect\.html$ http://www.mysite.com/newpage [L,R=301]
# ... existing rewrites