2010-08-24 126 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