Мне нужно передать 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]
Любые ссылки или помощь были бы замечательными
Вы только фиксируете одну переменную в своем правиле перезаписи.
Вам нужно что-то вроде:
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