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

Fra*_*ggy 5 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]
Run Code Online (Sandbox Code Playgroud)

任何链接或帮助都会很棒

Ros*_* II 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);
Run Code Online (Sandbox Code Playgroud)

所以用这个调用脚本:

http://www.example.com/variable1/variable2/variable3

会回来:

Array
(
    [0] => variable1
    [1] => variable2
    [2] => variable3
)
Run Code Online (Sandbox Code Playgroud)

这将适用于:

http://www.example.com/variable1/variable2/variable3http://www.example.com/process.php/variable1/variable2/variable3


jer*_*oen 5

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

你需要这样的东西:

RewriteRule ^([A-Za-z0-9_-]+)/([A-Za-z0-9_-]+)/([A-Za-z0-9_-]+)/?$ process.php?width=$1&height=$2&third=$3 [QSA,L]
Run Code Online (Sandbox Code Playgroud)

或者,有点短:

RewriteRule ^([\w-]+)/([\w-]+)/([\w-]+)/?$ process.php?width=$1&height=$2&third=$3 [QSA,L]
Run Code Online (Sandbox Code Playgroud)

(\w单词字符包括字母,数字和下划线)

我只使用结束斜杠可选,所以这个重写规则只有在有3个变量的情况下才能执行.