2009-08-12 55 views
5

將我的Kohana項目上傳到我的Godaddy服務器後,我注意到我的標準.htaccess文件沒有足夠的工作來提供乾淨的URL。一些指導後,我結束了以下規則:

RewriteRule .* index.php?kohana_uri=$0 [PT,L] 

這讓我漂亮的URL重新工作,但今天我發現,它可能打破我的內部搜索引擎,它也使用GET風格變量:

/search?terms=php 

這些值未被腳本找到。它們位於我的開發服務器上,它沒有修改過的RewriteRule,但沒有使用RewriteRule的Godaddy服務器上。

我是否正確地認爲規則打破了從$ _GET讀取任何腳本的能力,如果可以,我該如何解決這個問題?

回答

8

也許使用QSA在你的RewriteRules,像這樣:

RewriteRule .* index.php?kohana_uri=$0 [PT,QSA,L] 

manual of mod_rewrite(引用):

'qsappend | QSA'(查詢字符串追加)

此標誌強制重寫引擎將替換字符串的查詢字符串部分 附加到 現有字符串,而不是替換 它。如果要通過重寫 規則將更多 數據添加到查詢字符串,請使用此選項。

可能有助於(你的具體情況沒有測試,但我記得有這個前一段時間使用,某種問題,像這樣的)

+0

工作。在我接受之前,我會等待並讓其他人蔘與(因爲我對htaccess知之甚少,因此如果這是最好的解決方案)。謝謝! – Sampson 2009-08-12 19:04:05

+0

沒問題:-)不客氣! – 2009-08-12 19:20:58

1

我想你可以加上:RewriteCond $1 !^(search)或者這樣的一個變種。

0

如果你想使用標準的做法,並沒有查詢字符串你只需要按照這些步驟操作,它就像localhost一樣工作,而且你不需要改變重寫規則。

轉到您的GoDaddy的帳戶,文件管理器 - >的WebRoot目錄 - >創建php5.ini如果它不存在和地點下面一行是:cgi.fix_pathinfo = 1

現在,您需要重新啓動Web過程:

1.)登錄到您的客戶經理。 2)點擊虛擬主機。 3.)在要使用的主機帳戶旁邊,單擊啓動。 4.)在統計&監視器部分中,單擊系統進程。 5.)在左側列表中,單擊要查看的進程或單擊「所有進程」一次查看所有進程。 6.)要結束進程,請單擊工具欄上相應的結束按鈕。

現在您可以使用URI_PROTOCOL作爲Auto。