6

我需要使用 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]

任何链接或帮助都会很棒

4

2 回答 2

6

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

你需要类似的东西:

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 个变量时才会起作用。

于 2012-09-01T15:57:19.127 回答
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

于 2012-09-01T16:21:21.230 回答