我一直在寻找,但我无法找到我追求的东西。 我试图通过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]
...但是可能有更多,有人知道将这些自动解析为查询字符串的方法吗?
答案 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]