2015-02-24 59 views
0

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

问题是路径没有固定的子目录,可能很大。

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

这将是一个容易得多,如果你只是通过_any_路径脚本,然后用脚本中的'/'分解''这个路径... – CBroe 2015-02-24 15:04:05

+0

谢谢,我已经试过这样的东西,但是我想知道它是否可以在htaccess中处理 RewriteCond%{REQUEST_FILENAME}! - RewriteRule ^([^ /] +)/(。+)$ /index.php?module=$1&cats=$2 [QSA,L] – 2015-02-24 16:15:08

回答

2

如果paramater名称始终是相同的,你可以只通过他们依靠重写引擎循环中的所有:

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] 
+0

对不起,但我是n不仅如此,当我尝试你的示例 – 2015-02-24 16:17:51

+0

@MattJenkins时,我刚刚得到了一个404,它完全符合你在我的问题中对你的要求:http://i.stack.imgur.com/tUxk8.png http:// i .stack.imgur.com/tUxk8.png – 2015-02-24 16:30:22

+0

啊,好的,现在我已经明白了。谢谢! – 2015-02-25 14:52:46

相关问题