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

Вот мой полный URL https://www.huttonchase.com/prodDetails.php?id_prd=683

Для тестирования, чтобы убедиться, что я МОГУ это использовать, я использовал это:

RewriteRule prodDetails/(.*)/$ /prodDetails.php?id_prd=$1

Поэтому я могу использовать URL-адрес http://www.huttonchase.com/prodDetails/683/

Если вы щелкнете по нему, он работает, но полностью испортит относительные пути. Есть несколько обходных путей, но я хочу чего-то немного другого.

https://www.huttonchase.com/prod_683_strome-steel-flask

Я хочу, чтобы он увидел, что 'prod' сообщит ему, какому правилу он соответствует, 683 - это номер продукта, который я ищу в базе данных, и я хочу, чтобы он просто ИГНОРИРОВал последнюю часть, он там только для SEO и чтобы ссылка что-то значила для клиентов.

Мне сказали, что это должно сработать, но это не так:

RewriteRule ^prod_([^-]*)_([^-]*)$ /prodDetails.php?id_prd=$1 [L]

Как только первый заработает, я напишу его для

Categories: https://www.huttonchase.com/cat_11_drinkware

И текстовые страницы, управляемые базой данных: https://www.huttonchase.com/page_44_terms-of-service

Кстати, при необходимости я могу изменить свое использование тире и подчеркивания.

Кроме того, что лучше заканчивать URL-адреса косой чертой или без?

Спасибо!

answer

I'm told that this should work, but it's not:

RewriteRule ^prod_([^-]*)_([^-]*)$ /prodDetails.php?id_prd=$1 [L]

Взгляните на предоставленные вами примеры URL:

https://www.huttonchase.com/prod_683_stainless-steel-flask

Ищется используемое вами регулярное выражение prod_, за которым следует последовательность символов, которых нет -. Это не то, что вам нужно. Вы пытаетесь разделить URL-адрес _, поэтому вам нужно следующее:

RewriteRule ^prod_([^_]*)_(.*)$ /prodDetails.php?id_prd=$1 [L]

Это помещает номер продукта в $1и все, что после второго, _в $2. Если ваш идентификатор продукта всегда представляет собой последовательность цифр, вы также можете написать это:

RewriteRule ^prod_([0-9]*)_(.*)$ /prodDetails.php?id_prd=$1 [L]

Вы можете потратить некоторое время на чтение учебника по регулярным выражениям или около того. В mod_rewriteчастности, это касается :

Это разумный справочник по теме:

И, как сказал @serverninja, вежливо принимать ответы, которые кажутся вам полезными.