2010-08-24 40 views
0

我一直在努力阅读好几个小时,仍然无法找到我需要的东西!希望这里有人能帮忙。htaccess重定向存在一个特定的URL变量

我想要实现的是将具有特定变量的特定URL重定向到另一个页面,但不存在其他URL变量时。

例如。

  • 的index.php选项= com_user - 这需要重定向到index.php
  • 的index.php选项= com_user &视图=登录 - 这不能被重定向
  • 的index.php?选项= com_user &视图=登录&富=酒吧 - 这不能被重定向

我发现很多的测试对于一个给定的变量是否存在的例子,但我想,以测试变量和测试没有其他变量存在。

任何人都可以帮忙吗?

在此先感谢。

+0

因此,如果查询字符串只包含'option =',那么您希望执行(外部?)重定向?或者如果查询字符串包含'option ='并且不包含其他变量的特定列表? – 2010-08-24 20:11:01

+0

如果查询字符串明确包含option = com_user并且没有其他变量,我想执行内部重定向。这其实并不重要,但是我确实知道一些我可以测试的地方(如查看,返回)。 我特别想重定向的是URL index.php?option = com_user – tulip 2010-08-25 09:57:46

回答

1

可以说,如果你只做内部重定向,如果其他参数不存在,你的脚本可以忽略该参数。但是,这不是你问的问题,所以我们来看看mod_rewrite是如何做到的。

如果我们只关心是否有什么其他查询字符串,我们可以简单地检查是否option=com_user是那里唯一的:

RewriteEngine On 

RewriteCond %{QUERY_STRING} =option=com_user [NC] 
RewriteRule index\.php index.php? 

然而,这仍然允许/index.php?option=com_user&complete=nonsense漏网之鱼,所以如果我们想要限制一些,我们可以这样做:

RewriteEngine On 

# Check if the query string contains option=com_user 
RewriteCond %{QUERY_STRING} (^|&)option=com_user(&|$) 
# Check that all of these other parameters were not provided 
RewriteCond %{QUERY_STRING} !(^|&)view= 
RewriteCond %{QUERY_STRING} !(^|&)foo= 
RewriteRule index\.php index.php? 
+0

完美!谢谢你的帮助Tim。我实际上修改了它,以便它重定向到一个替代登录表单。 :) – tulip 2010-08-26 16:34:47