SEO дружественный URL вместо строки запроса .htaccess

Как я могу изменить файл .htaccess и получить SEO дружественные URLS вместо строки запроса. Я хочу достичь этих 3 целей:

  1. localhost / example / products / вместо localhost / example / products-list.php
  2. localhost / example / products / 38 / вместо localhost / example / products.php? id = 38
  3. localhost / example / products / 38 / red / вместо localhost / example / products.php? id = 38 & color = red

На другом посту @нубхава мне очень помог, и это то, что я имею сейчас для второго момента:

RewriteEngine on RewriteBase /example # external redirect from actual URL to pretty one RewriteCond %{THE_REQUEST} /products(?:\.php)?\?id=([^\s&]+) [NC] RewriteRule ^ products/%1? [R=302,L,NE] # internal forward from pretty URL to actual one RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^products/([^/]+)/?$ products.php?id=$1 [L,QSA] 

Второй пункт работает правильно, но я хочу знать, где я должен поставить другие правила до или после. Я применил это право после другого правила, но оно не работает, потому что оно перенаправляется на предыдущий url localhost / example / products / 38 / :

 # external redirect from actual URL to pretty one RewriteCond %{THE_REQUEST} /products(?:\.php)?\?id=([^\s&]+)\?color=([^\s&]+) [NC] RewriteRule ^ products/%1/%2? [R=302,L,NE] # internal forward from pretty URL to actual one RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^products/([^/]+)/([^/]+)/?$ products.php?id=$1&color=$2 [L,QSA] 

Вам понадобится новый набор правил для 2-х параметров:

 RewriteEngine on RewriteBase /example/ # external redirect from actual URL to pretty one RewriteCond %{THE_REQUEST} /products(?:\.php)?\?id=([^\s&]+)&color=([^\s&]+) [NC] RewriteRule ^ products/%1/%2/? [R=302,L,NE] RewriteCond %{THE_REQUEST} /products(?:\.php)?\?id=([^\s&]+)\s [NC] RewriteRule ^ products/%1/? [R=302,L,NE] RewriteCond %{REQUEST_FILENAME} -d [OR] RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^ - [L] # internal forward from pretty URL to actual one RewriteRule ^products/([^/]+)/?$ products.php?id=$1 [NC,L,QSA] RewriteRule ^products/([^/]+)/([^/]+)/?$ products.php?id=$1&color=$2 [NC,L,QSA] RewriteRule ^products/?$ products-list.php [L,NC]