Попытка получить имя продукта и идентификатор продукта в URL с косой чертой в конце и между ними без? P = - PullRequest
0 голосов
/ 28 июля 2010

Полагаю, в названии почти все сказано.

Мой оригинальный URL выглядит так: http://www.something.com/buy/index.php?p=025823

.htaccess, который я использую, выглядит следующим образом:

Options +FollowSymLinks

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(\d+)*$ ./index.php?p=$1

Полученный URL выглядит так: http://www.something.com/buy/025823

Я хотел бы в конечном итоге получить URL, например: http://www.something.com/buy/Product Name/025823/

Кто-нибудь может помочь? Особенно, что Гамбо парень! LOL

1 Ответ

0 голосов
/ 28 июля 2010

Если вы можете управлять ссылками, которые генерируются на ваши /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 об использовании внешней программы перезаписи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...