Какой самый быстрый/дешевый способ реализовать перезапись URL-адресов?
Связано с еще один вопрос - если вам нужно как можно скорее реализовать перезапись URL-адресов, какие методы вы использовали или знаете, которые могут ускорить это?
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-ссылок.
* ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Мои навыки регулярного выражения очень устарели, и я придумал их на пятно. Они могут ошибаться. Ваш пробег по фактическому регулярному выражению может отличаться, но концепция все еще остается в силе.