I've created a faceted browse on my site in PHP to help composers browse and drill-down results. My goal is to create friendly URLS for this directory, but this is a challenge due to the nature of the functionality. For example, there are too many possible combinations. For demonstration purposes I will provide a link. I am in no sense trying to advertise my site:
www.youngcomposers.com/page/classical-music-directory/
You will see that there are 4 main categories:
Category (?field_cat=)
Genre (?field_1=)
Sub Genre (?field_2=)
Form (?field_3=)
Furthermore, there are other attributes to narrow down navigation:
Pagination Results (?page=)
Unit of Time (?field_date=)
By Comments (?field_comments=)
By Composer (?field_composer=)
I've successfully rewritten the URLS for (Category, Genre, Sub Genre and Form) capturing all the possible combinations (for example, someone may choose Genre first, then Form second, then Category third, and mod_rewrite would have to capture this combination. But now I need to paginate through the results, narrow results by unit of time, by comments, and by composer. To capture every combination seems too tedious, and there must be a better way. Here is what I have to successfully rewrite the rules for Category, Genre, Sub Genre and Form. Any insight as to how to properly write these rules would be appreciated. Thanks!
#### Combo 4
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-c1.*-f1.*-f2.*-f3).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_cat=$1&field_1=$2&field_2=$3&field_3=$4 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-c1.*-f1.*-f3.*-f2).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_cat=$1&field_1=$2&field_3=$3&field_2=$4 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-c1.*-f2.*-f3.*-f1).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_cat=$1&field_2=$2&field_3=$3&field_1=$4 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-c1.*-f2.*-f1.*-f3).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_cat=$1&field_2=$2&field_1=$3&field_3=$4 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-c1.*-f3.*-f1.*-f2).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_cat=$1&field_3=$2&field_1=$3&field_2=$4 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-c1.*-f3.*-f2.*-f1).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_cat=$1&field_3=$2&field_2=$3&field_1=$4 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-f1.*-c1.*-f2.*-f3).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_1=$1&field_cat=$2&field_2=$3&field_3=$4 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-f1.*-c1.*-f3.*-f2).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_1=$1&field_cat=$2&field_3=$3&field_2=$4 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-f1.*-f2.*-f3.*-c1).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_1=$1&field_2=$2&field_3=$3&field_cat=$4 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-f1.*-f2.*-c1.*-f3).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_1=$1&field_2=$2&field_cat=$3&field_3=$4 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-f1.*-f3.*-c1.*-f2).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_1=$1&field_3=$2&field_cat=$3&field_2=$4 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-f1.*-f3.*-f2.*-c1).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_1=$1&field_3=$2&field_2=$3&field_cat=$4 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-f2.*-c1.*-f1.*-f3).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_2=$1&field_cat=$2&field_1=$3&field_3=$4 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-f2.*-c1.*-f3.*-f1).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_2=$1&field_cat=$2&field_3=$3&field_1=$4 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-f2.*-f1.*-f3.*-c1).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_2=$1&field_1=$2&field_3=$3&field_cat=$4 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-f2.*-f1.*-c1.*-f3).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_2=$1&field_1=$2&field_cat=$3&field_3=$4 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-f2.*-f3.*-c1.*-f1).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_2=$1&field_3=$2&field_cat=$3&field_1=$4 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-f2.*-f3.*-f1.*-c1).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_2=$1&field_3=$2&field_1=$3&field_cat=$4 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-f3.*-c1.*-f1.*-f2).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_3=$1&field_cat=$2&field_1=$3&field_2=$4 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-f3.*-c1.*-f2.*-f1).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_3=$1&field_cat=$2&field_2=$3&field_1=$4 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-f3.*-f1.*-f2.*-c1).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_3=$1&field_1=$2&field_2=$3&field_cat=$4 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-f3.*-f1.*-c1.*-f2).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_3=$1&field_1=$2&field_cat=$3&field_2=$4 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-f3.*-f2.*-c1.*-f1).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_3=$1&field_2=$2&field_cat=$3&field_1=$4 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-f3.*-f2.*-f1.*-c1).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_3=$1&field_2=$2&field_1=$3&field_cat=$4 [QSA]
#### Combo 3
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-c1.*-f1.*-f2).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_cat=$1&field_1=$2&field_2=$3 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-c1.*-f1.*-f3).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_cat=$1&field_1=$2&field_3=$3 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-c1.*-f2.*-f1).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_cat=$1&field_2=$2&field_1=$3 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-c1.*-f2.*-f3).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_cat=$1&field_2=$2&field_3=$3 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-c1.*-f3.*-f1).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_cat=$1&field_3=$2&field_1=$3 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-c1.*-f3.*-f2).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_cat=$1&field_3=$2&field_2=$3 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-f1.*-c1.*-f2).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_1=$1&field_cat=$2&field_2=$3 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-f1.*-c1.*-f3).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_1=$1&field_cat=$2&field_3=$3 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-f1.*-f2.*-c1).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_1=$1&field_2=$2&field_cat=$3 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-f1.*-f2.*-f3).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_1=$1&field_2=$2&field_3=$3 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-f1.*-f3.*-c1).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_1=$1&field_3=$2&field_cat=$3 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-f1.*-f3.*-f2).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_1=$1&field_3=$2&field_2=$3 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-f2.*-c1.*-f1).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_2=$1&field_cat=$2&field_1=$3 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-f2.*-c1.*-f3).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_2=$1&field_cat=$2&field_3=$3 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-f2.*-f1.*-c1).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_2=$1&field_1=$2&field_cat=$3 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-f2.*-f1.*-f3).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_2=$1&field_1=$2&field_3=$3 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-f2.*-f3.*-c1).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_2=$1&field_3=$2&field_cat=$3 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-f2.*-f3.*-f1).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_2=$1&field_3=$2&field_1=$3 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-f3.*-c1.*-f1).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_3=$1&field_cat=$2&field_1=$3 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-f3.*-c1.*-f2).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_3=$1&field_cat=$2&field_2=$3 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-f3.*-f1.*-c1).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_3=$1&field_1=$2&field_cat=$3 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-f3.*-f1.*-f2).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_3=$1&field_1=$2&field_2=$3 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-f3.*-f2.*-c1).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_3=$1&field_2=$2&field_cat=$3 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-f3.*-f2.*-f1).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)__(.*)/$ /page/classical-music-directory/?field_3=$1&field_2=$2&field_1=$3 [QSA]
#### Combo 2
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-c1.*-f1).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)/$ /page/classical-music-directory/?field_cat=$1&field_1=$2 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-c1.*-f2).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)/$ /page/classical-music-directory/?field_cat=$1&field_2=$2 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-c1.*-f3).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)/$ /page/classical-music-directory/?field_cat=$1&field_3=$2 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-f1.*-c1).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)/$ /page/classical-music-directory/?field_1=$1&field_cat=$2 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-f1.*-f2).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)/$ /page/classical-music-directory/?field_1=$1&field_2=$2 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-f1.*-f3).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)/$ /page/classical-music-directory/?field_1=$1&field_3=$2 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-f2.*-c1).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)/$ /page/classical-music-directory/?field_2=$1&field_cat=$2 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-f2.*-f1).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)/$ /page/classical-music-directory/?field_2=$1&field_1=$2 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-f2.*-f3).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)/$ /page/classical-music-directory/?field_2=$1&field_3=$2 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-f3.*-c1).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)/$ /page/classical-music-directory/?field_3=$1&field_cat=$2 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-f3.*-f1).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)/$ /page/classical-music-directory/?field_3=$1&field_1=$2 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*(-f3.*-f2).*?$ [NC]
RewriteRule ^classical-music-directory/(.*)__(.*)/$ /page/classical-music-directory/?field_3=$1&field_2=$2 [QSA]
#### Combo 1
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*-c1.*?$ [NC]
RewriteRule ^classical-music-directory/(.*)/$ /page/classical-music-directory/?field_cat=$1 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*-f1.*?$ [NC]
RewriteRule ^classical-music-directory/(.*)/$ /page/classical-music-directory/?field_1=$1 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*-f2.*?$ [NC]
RewriteRule ^classical-music-directory/(.*)/$ /page/classical-music-directory/?field_2=$1 [QSA]
RewriteCond %{THE_REQUEST} ^.*classical-music-directory/.*-f3.*?$ [NC]
RewriteRule ^classical-music-directory/(.*)/$ /page/classical-music-directory/?field_3=$1 [QSA]