2010-04-07 46 views
1

有人请告诉我这个htaccess规则有什么问题吗?我在这个HTACCESS文件上做错了什么?

RewriteCond %{QUERY_STRING} ^q=(.*)&type=downway1$ [NC] 
RewriteRule ^search\.php$ /search\/%1\/1\/? [R=301,NC,L] 

RewriteCond %{QUERY_STRING} ^q=(.*)&type=(.*)$ [NC] 
RewriteRule ^search\.php$ /search\/%1\/%2\/1\/? [R=301,NC,L] 

RewriteRule search/(.*)/(.*)/$ /search.php?q=$1&page=$2 [L] <-- this and 
RewriteRule search/(.*)/(.*)/(.*)/$ /search.php?q=$1&type=$2&page=$3 [L] <-- this 

在同一时间不工作。例如TYPE = app Q = windows

如果我通过downway1搜索类型,它的功能强大,但是如果我在应用程序类型中搜索,Q不仅会变成windows/app,而且会变成windows。请帮帮我!

编辑:我尝试"search.php?q=someterm&page=1""/search/someterm/1/""search.php?q=someterm&type=sometype&page=1""/search/sometype/someterm/1/"

+0

如果您首先告诉我们实际应该做什么,那么您可能会得到更好的答案。如果没有,请提高您的重写日志级别并开始调试。 – 2010-04-07 01:09:35

回答

1

重写规则,以便适用于重定向。在这种情况下,首先测试/search/(.*)/(.*)/$,实际上确实与确实匹配/search/windows/app/1/,因为点运算符匹配所有内容,包括正斜杠

尝试切换的规则的顺序,或者甚至更好,让他们独立顺序改变(.*)([^/]*),这意味着匹配的一切,除了正斜杠。这会使/search/windows/app/1/的第一次测试失败,所以apache会转移到第二个。

+0

我收到“试图打开不会结束任何时间进入路由循环。”错误。 :(( – 2010-04-07 07:50:20