2013-11-28 82 views
2

我在我的index.php克萊因路線不返回任何

<?php 

require 'vendor/autoload.php'; 

$router = new \Klein\Klein(); 

$router->respond('/hello-world', function() { 
    return 'Hello World!'; 
}); 

$router->dispatch(); 

和htaccess的得到這個代碼:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule . /index.php [L] 

,當我嘗試打開/你好世界(或index.php/hello-world)它只是給我一個空白的白屏。 如果我只有這條路:

$router->respond(function() { 
    return 'All the things'; 
}); 

它的工作原理上的index.php /但不是在/

我找了很長時間,但看不出什麼錯?

+0

這是一個很好的問題。它似乎沒有迴應你的$ _GET變量。你有這個想法嗎? – bafromca

+0

是否有可能你的Apache配置設置爲.htaccess無法覆蓋它? – eimajenthat

回答

0

它看起來像重寫不起作用。剛剛嘗試呼應的東西在PHP簡單,沒有任何框架,像這樣:

的index.php(只有這三條線)

<?php 
    echo 'does it work?'; 
?> 

然後嘗試調用像/你好世界。如果它不顯示您的消息,也許您的主機不支持mod_redirect。

你應該能夠與功能apache_get_modules顯示所有激活的Apache模塊:

<?php 
    print_r(apache_get_modules()); 
?> 

應該有mod_rewrite的上市。

1

與你的真實路徑試試這個,改變/路徑/到/應用程序到應用程序

define('APP_PATH', '/path/to/app'); 
require_once 'vendor/autoload.php'; 
$request = \Klein\Request::createFromGlobals(); 
$request->server()->set('REQUEST_URI', substr($_SERVER['REQUEST_URI'], strlen(APP_PATH))); 
$klein = new \Klein\Klein(); 

$klein->respond('GET', '/hello', function() { 
    return 'Hello World!'; 
}); 

$klein->dispatch($request); 
+0

它工作正常!謝謝 – peppelauro