[英]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.