Нужна помощь с перенаправлением URL-адресов в .htaccess

  • Автор темы Balkanskiy
  • 72
  • Обновлено
  • 16, May 2024
  • #1
Недавно я переместил ссылки из одного каталога в другой. Вместо того, чтобы переписывать 301 для каждой ссылки, я хотел бы выполнить одну перезапись, но не знаю, как заставить ее работать. Примеры СТАРЫХ URL-адресов:

/каталог/флюрозения/hn_4zk/hn4zk130.htm /каталог/флюрозения/hn_4zk/hn4zkxcG.html Примеры НОВЫХ URL-адресов: /каталог/lily1000125/hn_5rp/hn5rp130.htm /каталог/lily1000125/hn_5rp/hn5rpxcG.html Мне нужно что-то (переписать, перенаправить или что-то еще), что изменит КРАСНЫЙ разделы к СИНИЙ разделы

Balkanskiy


Рег
01 Jan, 2011

Тем
1

Постов
2

Баллов
12
  • 18, May 2024
  • #2
Перемещение каждой уничтоженной страницы/файла становится довольно утомительным и довольно быстрым.

и каждый из них будет замедлять КАЖДЫЙ запрос, а не только те, которые перенаправляются.

Регулярное выражение, если замены достаточно распространены, может помочь сократить его, так что вам не придется повторять его для каждого файла, но это все равно множество правил, которые замедлят работу Apache.

Простое перемещение файлов не сохраняет старые URI, и в большинстве случаев очень нежелательно иметь более одной копии файла в разных местах, чтобы сохранить старое и новое.

Следовательно, код состояния HTTP «301 перенаправление — перемещено навсегда».
 

Алекс1


Рег
29 Aug, 2013

Тем
0

Постов
2

Баллов
2
  • 03, Jun 2024
  • #3
Нет реального способа сделать это за одну перезапись только в .htaccess, если у вас есть целая куча разных условий соответствия - но да, если вы делаете около сотни таких условий, которые могут перетащить производительность вашего сервера на 9-е кольцо.

черт возьми, чем больше .htaccess, тем больше данных сервер должен обработать, прежде чем он сможет обслуживать неперенаправленные страницы. По этой причине я предпочитаю использовать метод перенаправления ошибок 404 на .PHP, который затем обрабатывает совпадения.

Перехватывая 404, вы не добавляете накладные расходы на Apache для совпадающих страниц, можете оформлять сообщения об ошибках так, как вам нравится, И можете обрабатывать перенаправления в PHP, отправляя 301 вместо 404, используя header() для любого перенаправления.

В вашем httpd.conf .htaccess вы просто добавляете:

ОшибкаДокумент 404/404Handler.php

а затем пусть этот .php обработает $_SERVER['REQUEST_URI'] для создания вашего 301.

По возможности старайтесь сделать ваш htaccess маленьким.

Чем больше регулярных выражений выполняется с помощью rewriteCond/rewriteRule, тем медленнее будут работать ваши страницы.

ВСЕ, даже те, которые не перенаправлены.
 

Alex.1


Рег
29 Apr, 2014

Тем
0

Постов
4

Баллов
4
  • 07, Jun 2024
  • #4
Да, и еще одна причина, по которой я предпочитаю подключать обработчик 404 для перенаправлений (помимо того, что он более эффективен), заключается не только в том, что сопоставление шаблонов легче манипулировать и понимать в таких языках, как PHP, — по крайней мере, по сравнению с .htaccess/httpd.conf - это также означает, что если ваш код идет битами вверх лицом вниз, только перенаправление/404 испорчены. Вы допустили ошибку в своем .htaccess, и это может привести к сбою всего сайта, обычно сообщая об ошибках серии 500.
 

Razom


Рег
04 Mar, 2014

Тем
2

Постов
4

Баллов
24
  • 10, Jun 2024
  • #5
Это хуже, чем я думал, у меня не только не было ответа... Я даже не до конца понял вопрос! Вот и все, я верю, что буду придерживаться того, что знаю... а именно писательства. А пока я прочитаю ваши ответы и пытаться продолжать учиться.
 

kamss1488


Рег
28 Nov, 2010

Тем
0

Постов
3

Баллов
3
  • 11, Jun 2024
  • #6
Самое последнее, что вам нужно, это кто-то вроде меня, который действительно не знает, о чем говорит, оставив здесь сообщение, но.... по крайней мере, вы и @deathshadow сможете вдоволь посмеяться за мой счет. Хорошо. почему бы просто не начать с:move*.twt targetDirectory затем по алфавиту (начиная с А) переместить A*destinationDirectory
 

enforc1k


Рег
26 Nov, 2013

Тем
1

Постов
2

Баллов
12
Тем
49554
Комментарии
57426
Опыт
552966

Интересно