我想重写如下内容:
http//www.example.com/index.php?var1=val1&var2=val2&var3=val3
进入
http://www.example.com/var1/val1/var2/val2/var3/val3/
我正在寻找一种解决方案来处理任意数量的变量。可以吗?
最佳答案
看看这个问题:Can mod_rewrite convert any number of parameters with any names?
My answer也可以用于您的情况:
$_SERVER['REQUEST_URI_PATH'] = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$segments = explode('/', trim($_SERVER['REQUEST_URI_PATH'], '/'));
for ($i=0, $n=count($segments); $i<$n; $i+=2) {
$_GET[rawurldecode($segments[$i])] = ($i+1 < $length) ? rawurldecode($segments[$i+1]) : null;
}
相应的规则:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [L]
此规则将无法映射到现有文件或目录的任何请求重写到 index.php
。
关于regex - 重写所有 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/893218/