2015-04-30 78 views
2

所以我最近和大概一天前一樣,詢問爲什麼我的routes were not working for slim和根據答案,我做了適當的修改,但除非我做錯路由選擇,否則它們不起作用。SlimPHP和路由 - 我做錯了嗎?

如果我們看一下我已經設置了路由文件,該文件在index.php文件要求,我們可以看到:

<?php 
use \ImageUploader\Controllers as Controller; 
/** ---------------------------------------------------------------- **/ 
// Routes. 
// 
// Routes are defined here. Nothing should happen in a route other then 
// Calling acontroller based action, such as: indexAction. 
/** ---------------------------------------------------------------- **/ 
$app = new \Slim\Slim(); 

$app->get('/', function(){ 
    Controller\HomeController::showHome(); 
}); 

$app->get('/signup', function(){ 
    Controller\SignupController::showSignupForm(); 
}); 

$app->post('/signup/new', function() use ($app){ 
    var_dump($app->request()->post('username')); 
    var_dump($app->request()->post('password')); 
}); 

// Don't touch. 
$app->run(); 

,我列出了一些路線。現在我可以去第一個,它會顯示HomeController::showHome的內容,但如果我嘗試並導航到http://localhost/image-upload/signup我得到:

Not Found 

The requested URL /image-upload/signup was not found on this server. 

現在我的項目在根目錄下不坐,它位於圖像上傳,所以當我只是去本地主機/圖像上傳我看到/路由執行結果。

我的htaccess:

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase /image-upload/ 

RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule^index.php [L] 
</IfModule> 

而且我index.php文件看起來像:

<?php 
/** ---------------------------------------------------------------- **/ 
// This is the core app. 
/** ---------------------------------------------------------------- **/ 
if (!file_exists('bootstrap.php')) { 
    throw new \Exception('Where is the bootstrap.php?'); 
} 

require_once 'bootstrap.php'; 

/** ---------------------------------------------------------------- **/ 
// Routing. 
/** ---------------------------------------------------------------- **/ 
require_once 'app/routes.php'; 

我做苗條路由錯誤或...

所做的更改

修正了重寫基礎,它是假設是/ image-upload /。這怎麼沒有解決任何問題。 Mod Rewrite已啓用並打開。

有人建議待定image-upload/(或相似)的苗條核心路線。這沒有幫助。實際上它破壞了路由。

+0

Is * mod_rewrite * enabled?是* htaccess *執行?以防萬一,你是否嘗試給你的Slim規則添加'/ image-upload /'前綴?另外,htaccess中的RewriteBase被設置爲'/ image-uploader /'。這是一個錯字還是應該像你談論的那樣是'/ image-upload /'? –

+0

@JustinIurman請參閱修訂後的問題,包括修改後的內容,TLDR,固定的'RewriteBase',前綴中斷路由和mod-rewrite。是的htaccess是執行,我認爲 - 作爲第一條路線工作正常。 – TheWebs

+0

這並不意味着htaccess被執行,因爲'/'在大多數情況下與'index.php'相同。嘗試在你的htaccess中放入一些隨機垃圾,看看你是否在'localhost /' –

回答

2

你可以試試這個嗎?

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule (.*) index.php?/$1 [L,QSA] 
+0

同樣的問題。這什麼都不做。 – TheWebs