regex - 重写所有 URL

标签 regex apache mod-rewrite

我想重写如下内容:

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/

相关文章:

apache rocketMQ 代理没有启动

.htaccess - mod_rewrite : Redirect request to subdir with many subfolders of different structures + redirect to index. php

.htaccess - 如何将 htaccess 规则转换为 IIS7/Symfony 的 web.config?

apache - 清理嵌套的 mod_rewrite 语句

java - 在 Java 泛型方法中使用正则表达式

ruby - 找到正则表达式的实例,转换成整数,做数学运算并在同一个地方替换?

ruby - 该 Ruby/RegEx 代码有什么作用?

regex - 带有 perl 正则表达式的 git 日志

linux - Apache 将 HTTPS 重定向到 HTTP

java - 查找唯一值和重复值