2011-11-15 32 views
4

我试图学习一点.htaccess,我真的很担心它能做什么。我在网上看到一个片段,但无法让它工作,它基本上是这样的如果一个查询字符串没有一定的值,重定向到index.php而不是其他页面。我怎么做?.htaccess:检查查询字符串是否具有某个值或重定向它

这看起来对价值苹果

www.domain.com/somefile.php?a=apples&b=xyz 

这将改为重定向到index.php:

www.domain.com/somefile.php?a=stinkycheese&b=xyz 

回答

15

您需要使用的RewriteCond里面%{QUERY_STRING}变量。因此,举例来说,如果你不想重定向如果存在查询字符串redirect=no,它应该是这样的:

RewriteCond %{QUERY_STRING} !(^|&)redirect=no($|&) 
RewriteRule . /index.php [L] 

因此,如果失败的RewriteCond(它在查询字符串redirect=no) ,则不应用以下规则,该规则将任何请求URI重写为/index.php。您需要的实际规则可能不同,但使用RewriteCond和%{QUERY_STRING}是您想要的基本想法。

+0

非常感谢乔恩,这真的帮了很大忙。由于.htaccess可以使用QUERY STRING扫描查询,它也可以删除它的一部分吗?例如,如果存在(或不存在,取决于使用情况),则在检查之后删除重定向=否。 – enchance

+0

您可以匹配*不是*'redirect = no'的所有内容,并使用反向提示(%1,%2,%3等)将其包含在内。就像'RewriteCond%{QUERY_STRING} ^(。*)redirect = no&?(。*)$'那么在你的规则中:'RewriteRule。 /index.php?%1%2 [L]' –

+0

你知道任何有价值的网络文章,谈论使用反向引用(%1,%2,%3等)吗?我想了解更多关于您刚刚发布的示例代码。 – enchance

相关问题