2016-09-22 316 views
0

我盡我所能搜索堆棧溢出問題和答案,甚至當我嘗試應用解決方案時,它不起作用。.htaccess從index.php重定向不起作用

我需要重定向都不會忽略,即首先

http://www.example.com/index.php?lang=XX

http://www.example.com/XX

這是我嘗試:

RewriteCond %{HTTP_HOST} ^www.example\.com [NC] 
RewriteRule ^(index\.php\?lang\=)$ http://www.example.com/$1 [L,R=302] 

位置/索引.php?lang = en 不是重定向/ en(任何地方)。 它位於相同的URL。

+0

不工作你是什麼意思?用戶仍然在http://www.example.com/index.php?lang=en結束 - 這是你的意思嗎? –

+0

我必須完全困惑。我需要結束於example.com/en – frankie

+0

是的,但用戶目前在哪裏結束?在http://www.example.com/index.php?lang=en(換句話說,沒有重定向)? –

回答

1

您無法在重寫過程中匹配query_string。你需要一個特定的RewriteCond。它應該或多或少像這樣:

RewriteCond %{HTTP_HOST} ^www\.example\.com [NC] 
RewriteCond %{QUERY_STRING} ^lang=(.*) 
RewriteRule^http://www.example.com/%1 [R=302,L,QSD] 
+0

爲什麼應該是'^'和'http://之間的空格? – frankie

+0

更正:更新答案後,它現在正在工作。謝謝。我會仔細檢查並回來。 – frankie

+1

^表示字符串的開頭,沒有別的東西需要,因爲你沒有捕獲任何東西,是的我添加了一個QSD(查詢字符串放棄)以避免重寫循環。感謝@Rich Bowen提醒我。 –