Rewrite up to three folders into three query string parameters to a PHP script

10,937

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.

Share:
10,937

Related videos on Youtube

Dan
Author by

Dan

Updated on September 18, 2022

Comments

  • Dan
    Dan over 1 year

    I'd like to use mod_rewrite within the .htaccess file to rewrite folders to a var string. Below is examples of current and what I would prefer.

    • Current URL: example.com/main/folder1/folder2/folder3
    • Preferred URL: example.com/parser.php?var1=folder1&var2=folder2&var3=folder3

    How can I rewrite the current URL's to preferred URLs?