Превратить текст после косой черты в переменные с помощью HTACCESS
Мне нужно передать 3 переменные с URL, но с использованием косой черты. Так, например, я бы использовал этот URL:
http://www.example.com/variable1/variable2/variable3
У меня есть это в моем HTACCESS, которое позволяет тексту после первой переменной быть переданным, но я не могу получить два других, даже если я добавлю &$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]
Любые ссылки или помощь будут отличными
2 ответа
Вы фиксируете только одну переменную в своем правиле перезаписи.
Вам нужно что-то вроде:
RewriteRule ^([A-Za-z0-9_-]+)/([A-Za-z0-9_-]+)/([A-Za-z0-9_-]+)/?$ process.php?width=$1&height=$2&third=$3 [QSA,L]
или немного короче:
RewriteRule ^([\w-]+)/([\w-]+)/([\w-]+)/?$ process.php?width=$1&height=$2&third=$3 [QSA,L]
(\w
символ слова включает буквы, цифры и подчеркивания)
Я сделал только конечную косую черту необязательной, так что это правило перезаписи будет делать что-то, только если есть ровно 3 переменные.
Возможно, вам будет проще получить параметры из файла.php через:
$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);
Итак, вызов сценария с этим:
http://www.example.com/variable1/variable2/variable3
вернется:
Array
(
[0] => variable1
[1] => variable2
[2] => variable3
)
Это будет работать для обоих:
http://www.example.com/variable1/variable2/variable3 и http://www.example.com/process.php/variable1/variable2/variable3