I need to pass 3 variables with a URL but using slashes. So for example I would use this URL:
http://www.example.com/variable1/variable2/variable3
I have this in my HTACCESS which allows the text after the first variable to be passed but I can't get the other two to come through, even if I add &$2
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule /?([A-Za-z0-9_-]+)/?$ process.php?width=$1&height=$2 [QSA,L]
Any links or help would be great
You are only capturing one variable in your rewrite rule.
You need something like:
RewriteRule ^([A-Za-z0-9_-]+)/([A-Za-z0-9_-]+)/([A-Za-z0-9_-]+)/?$ process.php?width=$1&height=$2&third=$3 [QSA,L]
or, a bit shorter:
RewriteRule ^([\w-]+)/([\w-]+)/([\w-]+)/?$ process.php?width=$1&height=$2&third=$3 [QSA,L]
(the \w
word character includes letters, digits and underscores)
I have made only the ending slash optional so this rewrite rule would only do something if there are exactly 3 variables.
You might find it easier to grab the parameters in the .php file, via:
$pathinfo = isset($_SERVER['PATH_INFO'])
? $_SERVER['PATH_INFO']
: $_SERVER['REDIRECT_URL'];
$params = preg_split('|/|', $pathinfo, -1, PREG_SPLIT_NO_EMPTY);
echo "<pre>";
print_r($params);
So calling the script with this:
http://www.example.com/variable1/variable2/variable3
would return:
Array
(
[0] => variable1
[1] => variable2
[2] => variable3
)
This will work for both:
http://www.example.com/variable1/variable2/variable3 and http://www.example.com/process.php/variable1/variable2/variable3
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With