繁体   English   中英

mod_rewrite可以转换任何名称的任意数量的参数吗?

[英]Can mod_rewrite convert any number of parameters with any names?

我在mod_rewrite上总共n00b,而我想做的事情听起来很简单:

而不是让domain.com/script.php?a=1&b=2&c=3我希望拥有:

domain.com/script|a:1;b:2;c:3

问题是我的脚本以多种组合形式使用大量参数,并且顺序不重要,因此对表达式中的每个代码进行编码并期望确定的顺序是不可行的。 那么是否可以设置一个规则,将所有参数简单地传递给脚本,而不考虑顺序或有多少个参数? 这样,如果有人输入

domain.com/script|a:1;b:2;j:7会传递所有这些参数和值,就像domain.com/script|b:2;a:1;一样

谢谢!

我将使用PHP解析请求的URL路径:

$_SERVER['REQUEST_URI_PATH'] = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$params = array();
foreach (explode(',', substr($_SERVER['REQUEST_URI_PATH'], 6)) as $param) {
    if (preg_match('/^([^:]+):?(.*)$/', $param, $match)) {
        $param[rawurldecode($match[1])] = rawurldecode($match[2]);
    }
}
var_dump($params);

然后使用mod_rewrite规则将此类请求重写到您的/script.php文件中:

RewriteRule ^script\|.+ script.php [L]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM