mod_rewrite seo的循环模式

时间:2013-04-11 01:14:38

标签: mod-rewrite

我有以下链接

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] 

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

提前致谢 诺贝特

1 个答案:

答案 0 :(得分: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本身是否有可能。