htaccess重定向以存在特定的URL变量

时间:2010-08-24 16:18:18

标签: .htaccess mod-rewrite

我已经读了好几个小时但仍然无法找到我需要的东西!希望有人可以提供帮助。

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

例如

  • index.php?option = com_user - 需要将其重定向到index.php
  • index.php?option = com_user& view = login - 不得重定向
  • index.php?option = com_user& view = login& foo = bar - 不得重定向

我发现了很多测试给定变量是否存在的例子,但我想测试该变量并测试其他变量是否存在。

有人可以帮忙吗?

提前致谢。

1 个答案:

答案 0 :(得分: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?