2016-02-29 102 views
1

我開發使用XAMPP和CodeIgniter的Web應用程序。處理乾淨路由的最佳方法是將VirtualHost設置爲指向包含xampp/apache/conf/httpd.conf中項目的文件夾,然後使用route.php文件中的路由路由,例如,笨控制器可達

$route['page1'] = "Page1Controller/page1Function"; 
$route['page1'] = "Page1Controller/page1Function"; 

我用的href或頭部像這樣使用根作爲基礎文件夾:

href="/page1" 

所有在本地上工作得很好,我從來沒有使用base_url()或這樣的功能。

切換到生產服務器,我顯然不具備,除了我個人文件夾的任何權利和子文件夾,所以當我執行它,根文件夾成爲所有域的根,不只是我的項目文件夾。

我試過base_url()但它不起作用,即使沒有使用$route也找不到頁面。

有沒有辦法來處理這個不重構代碼或什麼是重構來做到這一點的所有鏈接?

編輯

而不是使用"/page1"的,我現在使用"./page1"訪問的index.php文件夾的位置。但是,我仍然無法訪問其他頁面,無論是使用PHP還是使用html/js。

+0

你能分享你的.htaccess文件嗎?順便說一下,主頁的作品與否? –

+0

確保控制器名稱以大寫字母開頭,例如「home.php」應該命名爲「Home.php」,並將base_url()留空。 – Dray

+0

@Dray我已經這樣做了,謝謝。我會編輯我的問題 – user3311142

回答

1

假設路由工作的地方,這裏是我把它適應生產服務器的步驟。

1 - 對控制器和視圖第一個字母大寫

笨正在請求控制器和視圖所以即使路由是在Windows上工作的命名使用大寫字母,Linux的情況下,靈敏度要求在routes.php文件中的類標題和引用中都有相應的命名。

2 - 使用的'./'代替'/'

由於應用程序的部署在一個子域發生時,根對應於域本身而不是子域,其中的index.php駐留並且與'./'訪問(cf. SO question)

3 - .htaccess文件中

在此之後doc硬編碼子域的路,我執行的步驟來糾正標準.htaccess文件,以使其與服務器上的一個子目錄工作。該標準型是簡單地從這個規則中刪除'/'

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

導致

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

然而,這並沒有解決這個問題我的服務器上,我不得不硬編碼路徑:

如果從一個子目錄運行EE和它仍然沒有消除斜線後工作 ,你可能需要在 指定子目錄你的重寫規則。例如,如果你的子文件夾命名爲測試, 變化:

RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L]

要:

RewriteRule (.*?)index\.php/*(.*) testing/$1$2 [R=301,NE,L]

而變化:

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

要:

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