RegEx и Mod_rewrite для преобразования динамических в статические URL и статических в динамические URL

У меня есть две взаимосвязанные проблемы, которые нужно решить.

Мой стоковой веб-сайт управляется программой, написанной на языке PERL под названием ImageFolio, купленной в 2005 году. Программа позволяет отображать фотографии по категориям или осуществлять поиск по ключевым словам, которые затем предоставляют страницы миниатюрных изображений, соответствующих содержанию всей категории, или изображения с ключевыми словами или названиями изображений, соответствующими условиям поиска. При нажатии на миниатюру изображения отображается динамически сгенерированная страница, показывающая увеличенный вид изображения.

Поскольку одни и те же изображения могут отображаться в результате нескольких поисков, важно назначить каноническую страницу в разделе HEAD динамически генерируемых страниц, используя выражение RegEx для получения информации о соответствующей переменной из динамического URL, для создания и указания ссылки rel. ="канонический" тег в разделе HEAD каждой страницы. Соответствующие операторы MOD_REWRITE требуются в файле.htaccess для перевода этих статических канонических ссылок обратно в правильно структурированные динамические ссылки для доставки надлежащего содержимого.

Вот некоторые типичные динамически генерируемые URL и предпочтительные статические заменители URL:

Прямая ссылка на "категорию", отображающую страницу миниатюр из этой категории
ДИНАМИЧНЫЙ: www.artminds.com/cgi-bin/ImageFolio4/imageFolio.cgi?direct=Athletics_and_Sports
Желаемая статическая каноника : www.artminds.com/stock-photos/Athletics-and-Sports
MOD_REWRITE: такой же, как динамический выше

Поиск изображений, нажав на ключевое слово на странице изображения
ДИНАМИЧНЫЙ: www.artminds.com/cgi-bin/ImageFolio4/imageFolio.cgi?img=0&search=six%20pack&cat=all&bool=phrase
Желаемая статическая каноника : www.artminds.com/photo-search/six-pack.html
MOD_REWRITE: /cgi-bin/ImageFolio4/imageFolio.cgi?search=six+pack

Поиск изображений, введя ключевое слово в поле поиска
ДИНАМИЧНЫЙ: www.artminds.com/cgi-bin/ImageFolio4/imageFolio.cgi?search=six+pack&bool=and&cat=&x=0&y=0
Желаемый статический канонический : www.artminds.com/six-pack.html
MOD_REWRITE: /cgi-bin/ImageFolio4/imageFolio.cgi?search=six+pack

Показать одну страницу изображения от нажатия на миниатюру
ДИНАМИЧНЫЙ: www.artminds.com/cgi-bin/ImageFolio4/imageFolio.cgi?action=view&link=On_Location&image=103_8310.jpg&img=0&search=six%20pack&cat=all&tt=&bool=and
Желаемая статическая каноника : www.artminds.com/103_8310/Muscular-young-man-posing-shirtless-with-cowboy-hat-and-blue-jeans.html
MOD_REWRITE: /cgi-bin/ImageFolio4/imageFolio.cgi?action=view&link=On_Location&image=103_8310

Примечание. Длинное имя файла в "Желаемом каноническом", приведенном выше, происходит от заголовка изображения, который отображается в теге заголовка HTML на странице отображения изображения, полученного с помощью переменных в программе сценария, которые извлекают встроенные метаданные в файле изображения. Дополнительные переменные в динамическом URL-адресе раскрывают источник отображения миниатюр, по которому был выполнен щелчок, т. Е. Прямую ссылку на категорию или на основе ключевых слов поиска, а также был ли поиск ограничен одной категорией и был ли поиск интерпретирован как и / или / фраза, но не требуется специально идентифицировать эту страницу отображения изображения из всех других HTML-страниц

В приведенных выше динамических примерах, хотя может быть несколько переменных, обычно важна только одна, и ее необходимо захватить как для преобразования в статический URL, так и в колодце, как в Mod_rewrite для преобразования статического в динамический URL, как показано в MOD_REWRITE. примеры выше.

Любая помощь будет очень высоко ценится.

Спасибо,
Art Minds
Пасадена, Калифорния

2 ответа

Решение

Благодаря @ruakh я решил эту проблему, разместив упрощенную версию вопроса. Вот решение для захвата части статического URL в любой из трех следующих форм и передачи ее в качестве параметра в мой CGI-скрипт, который выполняет поиск:

http://www.artminds.com/photo-search/outdoors

http://www.artminds.com/photo-search/outdoors/

` http://www.artminds.com/photo-search/outdoors.html

RewriteRule ^photo-search\/([^/]+?)(/|\.html|)$ http://www.artminds.com/cgi-bin/ImageFolio4/imageFolio.cgi\?search=$1&bool\=all [R]

Что вы использовали для прямых ссылок?

"Прямая ссылка на" категорию ", отображающую страницу миниатюр из этой категории ДИНАМИЧНАЯ: www.artminds.com/cgi-bin/ImageFolio4/imageFolio.cgi?direct=Athletics_and_Sports ЖЕЛАЯ СТАТИЧЕСКАЯ КАНОНИЧЕСКАЯ: www.artminds.com/stock-photos/ Легкая атлетика и спорт MOD_REWRITE: То же, что и выше "

Другие вопросы по тегам