2012-10-18 36 views
0

我不知道很多關於Apache重寫,我有這一套,我想要做的要求:阿帕奇與重定向查詢字符串可以循環

1. http://domain.com/keyword ==> http://domain.com/index.php?c=keyword 
2. http://domain.com/keyword?utm_source=affiliate ==> http://domain.com/index.php?c=keyword&utm_source=afiliate 
3. Do not rewrite any request like http://domain.com/css/ http://domain.com/images/ 

我努力學習,並已能夠寫重定向像這樣解決#1和#2:

RewriteEngine on 
RewriteRule ^([A-Za-z0-9-+.,]+)\?*(.*)$ index.php?c=$1$2 [QSA] 

這對我的需求上面的#1和#2的工作。然而,當我試圖訪問一個網址像http://domain.com/b它產生以下結果(PHP)$_SERVER['QUERY_STRING']: c=index.php&c=b

而且,我得到一個連續的環重定向如果我改變(只是因爲我很好奇)的標誌[R,QSA]與絕對域,這表明該規則正在處理多次。

有人可以幫忙嗎?

回答

1

嘗試增加一對RewriteCond來過濾你不想這些路徑被rewrited,像這樣:

RewriteEngine on 
RewriteCond %{REQUEST_URI} !^/css/ 
RewriteCond %{REQUEST_URI} !^/images/ 
RewriteRule ^([A-Za-z0-9-+.,]+)\?*(.*)$ index.php?c=$1$2 [QSA] 
+0

感謝您的答覆。這將有助於未來。但我擔心,我的問題是關於沒有得到乾淨的QueryString,因爲我的應用程序在請求中看到了'c = index.php&c = b'(兩個C值) – kishu27

+0

通過您的幫助解決了它。我爲/index.php添加了一個過濾器,並且工作正常。非常感謝 – kishu27

+0

我很高興你終於解決了它:-) – Nelson