htaccess mod_rewrite查询字符串的多个路径

时间:2015-02-24 14:59:26

标签: .htaccess mod-rewrite

我一直在寻找,但我无法找到我追求的东西。 我试图通过htaccess和mod_rewrite找到一种优雅的方法将我的url路径重定向到查询字符串。

问题在于路径没有固定的子目录,并且可能很大。

即。 http://example.com/sub1/sub2/sub3/sub4/sub5/sub6/sub7 ...

目前我只是在我的htaccess中有一大堆规则来捕捉这些......

RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/? /index.php?sub[]=$1&sub[]=$2&sub[]=$3&sub[]=$4&sub[]=$5 [QSA,L]
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/? /index.php?sub[]=$1&sub[]=$2&sub[]=$3&sub[]=$4 [QSA,L]
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/? /index.php?sub[]=$1&sub[]=$2&sub[]=$3 [QSA,L]
RewriteRule ^([^/]+)/([^/]+)/? /index.php?sub[]=$1&sub[]=$2 [QSA,L]
RewriteRule ^([^/]+)/? /index.php?sub[]=$1 [QSA,L]

...但是可能有更多,有人知道将这些自动解析为查询字符串的方法吗?

1 个答案:

答案 0 :(得分:2)

如果参数名称始终相同,您可以依靠重写引擎来遍历它们:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)$ /index.php?sub[]=$1 [L,QSA]

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