将文字斜线后与.htaccess的变量(Turn text after slashes into v

2019-06-27 16:07发布

我需要通过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]

任何链接或帮助将是巨大

Answer 1:

您只捕捉你的重写规则一个变量。

你需要这样的东西:

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个变量。



Answer 2:

您可能会发现更容易抓住的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



文章来源: Turn text after slashes into variables with HTACCESS