使用HTACCESS将斜杠后的文本转换为变量

时间:2012-09-01 15:53:57

标签: php .htaccess redirectstandardoutput

我需要使用URL传递3个变量但使用斜杠。例如,我将使用此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 个答案:

答案 0 :(得分:6)

您可能会发现通过以下方式获取.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/variable3http://www.example.com/process.php/variable1/variable2/variable3

答案 1 :(得分:5)

您只在重写规则中捕获一个变量。

您需要以下内容:

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个变量,这个重写规则只会做一些事情。