2012-12-05 112 views
5

我有3臺服務器,一臺localhost apache服務器,一臺測試遠程服務器和生產服務器。Codeigniter,生產服務器上的路由不起作用

我有相同的codeigniter安裝和站點設置在他們所有3和本地主機和測試服務器路由沒有'index.php'工程100%。然而,在生產服務器上,無論URL如何顯示只有主頁(通過默認控制器),都會顯示出來,除了默認的路由規則外,似乎所有的路由規則都被忽略了。

但是,如果index.php被添加到URL中,那麼它會像它應該的那樣工作。

例如,如果生產站點上的URL是:'www.mysite.com/information',那麼加載的內容就是默認控制器。

但是當製作網站上的URL是:'www.mysite.com/index.php/information'時,加載的內容來自'信息'控制器。

這是我htacess文件的內容:http://pastebin.com/cDaZVJ8A

這是我的路由配置文件:http://pastebin.com/7Ewc2bwN

我$配置[ 'index_page']設置爲無。

我真的不知道爲什麼它不工作,在codeigniter本身的所有服務器上的相同設置,並且mod_rewrite IS在生產服務器上工作。

我不知道該怎麼做,我該如何找出有什麼問題?

+0

你是否在'application/config/production'目錄中檢查'routes.php'是否存在?如果文件存在,它將覆蓋'application/config'目錄中的文件。 – Stanley

+0

@Stanley,它確實存在於生產服務器上的正確位置。 – Nicekiwi

+0

@Stanley,等什麼?配置目錄中沒有文件夾? – Nicekiwi

回答

6

這是當人們移動笨安裝從一個環境到另一個經常出現一個相當普遍的問題。我不知道它爲什麼會發生,可能是服務器操作系統或apache設置的差異,但解決方案通常是在您的.htaccess文件中爲Index.php的RewriteRule添加一個問號?

老:

RewriteRule ^(.*)$ index.php/$1 [L] 

新:

RewriteRule ^(.*)$ index.php?/$1 [L] 
+1

我從來沒有遇到過這個問題,但很高興知道可能的解決方案 – m4t1t0

1

檢查您的Apache虛擬主機配置,並確認您的目錄定義中有AllowOverride All

+0

我沒有訪問權限,它是一個共享服務器。 – Nicekiwi

1
  1. 也許你的.htaccess文件有問題嗎?

    一旦我將應用程序移動到生產服務器時出現問題,因爲RewriteBase被設置爲開發服務器上的某個目錄。

    在我的生產服務器應用程序在web根目錄下,所以RewriteBase應該是/,我在那裏有/something

  2. 有一次,當我將網站從開發服務器(Windows)移動到生產(linux)時,我的上/下套有一個愚蠢的問題。

+0

我希望這很容易,你可以從問題中的鏈接看到我自己的htacess文件。它是正確的。 – Nicekiwi

+0

現在看看@Ezra。我添加了一個小費。 – Kamil

0

我有同樣的問題。我正在使用函數將文章名稱轉換爲URL(slugify)。

在localhost和服務器上,這個函數返回的網址略有不同。

相關問題