Превратить текст после косой черты в переменные с помощью 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

Другие вопросы по тегам