Какой самый быстрый/дешевый способ реализовать перезапись URL-адресов?


Связано с еще один вопрос - если вам нужно как можно скорее реализовать перезапись URL-адресов, какие методы вы использовали или знаете, которые могут ускорить это?

Author: Community, 2010-07-09

1 answers

Нам удалось создать несколько сотен продуктов менее чем за 8 часов. Вот наш сценарий:

У нас было:

  • Собачьи уродливые URL-адреса, которые были заполнены бессмысленными параметрами
  • Внутренние разработчики
  • Полный доступ к базе данных SQL и схеме
  • IIS6/Переписать ISAPI (но мы могли бы сделать это для других)

Вариант 1

Наша таблица продуктов выглядела так:

ID | Product Name | Description | etc
-------------------------------------
001|Product 1     | This is...  | etc
002|Product 1     | This is...  | etc
003|Product 1     | This is...  | etc

Поэтому мы написали небольшую пакетную программу, которая пройдитесь по нашей таблице products и создайте записи в нашем файле httpd.ini (версия .htaccess для перезаписи ISAPI), так что мы получили файл с сотнями записей, подобных этой:

RewriteRule (/product-1/) /DLLFolder/Requester.dll?APPLICATION=MyApp&PROGRAM=Products&ARGUMENTS=-N001 [I,O,U] * Пожалуйста, смотрите Отказ от ответственности

Наши продукты меняются не очень часто, поэтому мы просто запускаем это вручную каждый раз, когда что-то добавляем. Не элегантно, но речь идет о том, чтобы сделать это быстро/дешево.

Затем, везде, где наши ссылки печатались на продукты, мы просто следили за тем, чтобы ссылки были выводится на их полный URL-адрес.

В общей сложности это заняло около 8 часов.

Вариант 2

Одно общее правило перезаписи URL-адресов, которое выглядит примерно так:

RewriteRule (/products/)(.*/)(.*) /DLLFolder/Requester.dll?APPLICATION=MyApp&PROGRAM=Products&ARGUMENTS=-N$3 [I,O,U] * Пожалуйста, смотрите Отказ от ответственности

Это означало, что мы могли бы написать:

/products/my/thing/whatever/the/hell/i/want/123

И он будет переписан на правильный URL-адрес. Тогда это просто вопрос изменения вывода ваших URL-ссылок.

* ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Мои навыки регулярного выражения очень устарели, и я придумал их на пятно. Они могут ошибаться. Ваш пробег по фактическому регулярному выражению может отличаться, но концепция все еще остается в силе.

 2
Author: Mark Henderson, 2020-06-16 10:32:57