Если вы можете управлять ссылками, которые генерируются на ваши /buy/
страницы, просто вставьте название продукта в URL (с учетом правил URL-адресов, как пробелы не допускаются. Обычно люди заменяют -
напространства).Затем измените свое регулярное выражение перезаписи, чтобы игнорировать часть имени продукта в вашем URL.
RewriteBase /
RewriteRule ^/buy/(.+)/(\d+)/$ ./index.php?p=$2
Если вы не можете управлять ссылками, все усложняется, так как вам придется искать название продукта, используяRewriteMap
, а затем выполните перенаправление.Я только недавно освещал это в подобном вопросе .Мой ответ на этот вопрос более подробно описывает использование RewriteMap
, но я не думаю, что подробности этого ответа применимы к вашей ситуации, поскольку использование статически определенного списка продуктов, вероятно, не подойдетудовлетворить ваши потребности.
По сути, вам нужно реализовать скрипт, который можно вызывать из правила RewriteMap
mod_rewrite.Вам понадобится что-то вроде:
RewriteMap prodname pgm:/path/to/script/namelookup.sh
RewriteRule ^/buy/(\d+)/$ /buy/${prodname:$1}/$1/ [R=permanent]
Где namelookup.sh (или что-то еще) возвращает название продукта (в stdout) в формате в кодировке URL.Вы определенно захотите взглянуть на документацию mod_rewrite об использовании RewriteMap
, в частности, последний раздел RewriteMap Directive
об использовании внешней программы перезаписи.