0

我有以下链接

http://xyz.com/path1/path2/page/par1/par1value/par2/par2value/par3/par3value ....未定义的参数数量

我希望通过 mod_rewrite 将其转换为类似的东西:

http://xyz.com/path1/path2/page.php?par1=par1value&par2=par2value&par3=par3value&par4=par4value ...

我做了很多尝试,但没有一个完全成功。我最终得到了类似的东西 - 对于 2 个参数(虽然它不会重复)

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)\/(.+)\/(.+)\/(.+)\/(.+)[^/]+$ $1.php?$2=$3&$4=$5 [L] 

我对此解决方案不满意,请帮助我正确构建条件

在此先感谢诺伯特

4

1 回答 1

0

最后我这样做了:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+?)/(.*?)$ $1.php?route=$2 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ $1.php [L] 

  • 我正在解析我的 PHP 脚本中的“路由”
  • 从 GET 数组中删除“路线”作为 SEO 类的一部分

    
    public static function router($router = "route") {
        if ($route = GetFromGet($router)) {
            $arr = preg_split('/\//', $route);
            if (sizeof($arr)) {
                unset($_GET[$router]);
                foreach ($arr as $key => $value) {
                    if (($key % 2) == 1) {
                        $_GET[$arr[$key - 1]] = $value;
                    }
                }
            }
        }
    }
    

因此,在我调用的常用文件的开头某处:

SEO::router();

以上解决了这个问题,但是我仍然很好奇 mod_rewrite 本身是否有可能。

于 2013-04-11T11:27:25.297 回答