I'm assuming, (looking at your directives) that your
.htaccess file is located at
RewriteRule ^product_configurator.php/(\d+)$ product_configurator.php?prometheus_id=$1&id=$2 [NC,L]
This is close, although you only have a single capturing subpattern (ie.
(\d+)), yet you have two backreferences (ie.
$2) in the substitution string. You are also only matching digits (
\d), whereas the pattern you are wanting to match contains
& - a non-digit. So the above will simply fail to match.
You have also introduced a
.php extension, whereas the example URLs you posted consist of
.html. I'm assuming you are already rewriting
.php (as suggested by your directives). However, you should do this directly with a single directive.
Your rewrite to change the extension from
RewriteRule ^(.*).html $1.php) would also overwrite the information you are trying to match since this is included in the URL-path.
Try the following instead:
# Rewrite "product_configurator.html/10082&73"
RewriteRule ^(product_configurator)\.html/(\d+)&(\d+)$ $1.php?prometheus_id=$2&id=$3 [L]
We capture the
product_configurator string from the request (into the
$1 backreference) to save repetition in the substitution string.
$3 then represent the values before and after the
& in the URL-path.
I've removed the
NC flag to prevent a potential "duplicate content" issue. Unless you specifically need a case-insensitive match, the
NC flag should be avoided.
# Rewrite other ".html" requests to ".php"
RewriteRule (.+)\.html$ $1.php [L]