You can use these three rewrite rules which handle up to 3 levels of directories:
RewriteEngine on
RewriteRule ^main\/([^\/]+)\/([^\/]+)\/([^\/]+)\/? /parser.php?var1=$1&var2=$2&var3=$3 [L]
RewriteRule ^main\/([^\/]+)\/([^\/]+)\/? /parser.php?var1=$1&var2=$2 [L]
RewriteRule ^main\/([^\/]+)\/? /parser.php?var1=$1 [L]
In those regular expressions:
^main\/
: starts with "main/"
([^\/]+)
: a bunch of characters that are not slashes (in a capturing group to be pulled out with $1
, $2
, or $3
)
\/?
an optional ending slash
[L]
the last rewrite rule (so that later rewrite rules don't also get triggered)
I usually prefer to pass all the folders as a single variable like so:
RewriteEngine on
RewriteRule ^main\/(.*) /parser.php?folders=$1
then your PHP parser could split the folders on the slash to get the three variables you want.
example.com/main/folder1/folder2/folder3
should remain in the address bar - is that correct?