2016-09-17 178 views
0

非標準發現Hello World工作良好:Kohana_HTTP_Exception [404]:請求的URL /沒有被在此服務器上

Route::set('default', '(<controller>(/<action>(/<id>)))') 
    ->defaults(array(
     'controller' => 'welcome', 
     'action'  => 'index', 
    )); 

如果我更改到其他控制器,例如控制器/網站/ test.php的話,我有錯誤信息:

Kohana_HTTP_Exception [404]:在此服務器上找不到請求的URL/ 。

Route::set('default', '(<controller>(/<action>(/<id>)))') 
    ->defaults(array(
     'directory' => 'site' 
     'controller' => 'test', 
     'action'  => 'index', 
    )); 

控制器是好test.php的

<?php defined('SYSPATH') or die('No direct script access.'); 

class Controller_Test extends Controller { 

    public function action_index() 
    { 
     $this->response->body('hello, t world!'); 
    } 

} // End Test 

bootstrap.php中

Kohana::init(array(
    'base_url' => '/', 
    'index_file' => FALSE, 
)); 

的.htaccess

# Turn on URL rewriting 
RewriteEngine On 

# Installation directory 
RewriteBase/

# Protect hidden files from being viewed 
<Files .*> 
    Order Deny,Allow 
    Deny From All 
</Files> 

# Protect application and system files from being viewed 
RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [L] 

# Allow any files or directories that exist to be displayed directly 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

# Rewrite all other URLs to index.php/URL 
RewriteRule .* index.php/$0 [PT] 

結構domen http://kohanafr/var/www/html/kohanafr

曲調virtualhost

<VirtualHost *:80> 
    ServerAdmin [email protected] 
    ServerName kohanafr 
    ServerAlias www.kohanafr 
    DocumentRoot /var/www/html/kohanafr 
    ErrorLog ${APACHE_LOG_DIR}/error.log 
    CustomLog ${APACHE_LOG_DIR}/access.log combined 
</VirtualHost> 

阿帕奇config

<Directory /> 
    Options FollowSymLinks 
    AllowOverride None 
    Require all denied 
</Directory> 

<Directory /usr/share> 
    AllowOverride None 
    Require all granted 
</Directory> 

<Directory /var/www/html> 
    Options Indexes FollowSymLinks 
    AllowOverride None 
    Require all granted 
</Directory> 

加。到該錯誤的代碼:

SYSPATH/classes/Kohana/Request/Client/Internal.php [ 80 ]

75   if (! class_exists($prefix.$controller)) 
76   { 
77    throw HTTP_Exception::factory(404, 
78     'The requested URL :uri was not found on this server.', 
79     array(':uri' => $request->uri()) 
80    )->request($request); 
81   } 
82 
83   // Load the controller using reflection 
84   $class = new ReflectionClass($prefix.$controller); 
85 

1. SYSPATH/classes/Kohana/Request/Client.php [ 114 ] » Kohana_Request_Client_Internal->execute_request(arguments)

object Request(19) { 
    protected _requested_with => NULL 
    protected _method => string(3) "GET" 
    protected _protocol => string(8) "HTTP/1.1" 
    protected _secure => bool FALSE 
    protected _referrer => NULL 
    protected _route => object Route(5) { 
     protected _filters => array(0) 
     protected _uri => string(32) "(<controller>(/<action>(/<id>)))" 
     protected _regex => array(0) 
     protected _defaults => array(3) (
      "directory" => string(4) "site" 
      "controller" => string(4) "test" 
      "action" => string(5) "index" 
     ) 
     protected _route_regex => string(95) "#^(?:(?P<controller>[^/.,;?\n]++)(?:/(?P<action>[^/.,;?\n]++)(?:/(?P<id>[^/.,;?\n]++))?)?)?$#uD" 
    } 
    protected _routes => array(0) 
    protected _header => object HTTP_Header(0) { 
    } 
    protected _body => NULL 
    protected _directory => string(4) "Site" 
    protected _controller => string(4) "Test" 
    protected _action => string(5) "index" 
    protected _uri => string(0) "" 
    protected _external => bool FALSE 
    protected _params => array(0) 
    protected _get => array(0) 
    protected _post => array(0) 
    protected _cookies => array(0) 
    protected _client => object Request_Client_Internal(9) { 
     protected _previous_environment => NULL 
     protected _cache => NULL 
     protected _follow => bool FALSE 
     protected _follow_headers => array(1) (
      0 => string(13) "authorization" 
     ) 
     protected _strict_redirect => bool TRUE 
     protected _header_callbacks => array(1) (
      "Location" => string(34) "Request_Client::on_header_location" 
     ) 
     protected _max_callback_depth => integer 5 
     protected _callback_depth => integer 1 
     protected _callback_params => array(0) 
    } 
} 
object Response(5) { 
    protected _status => integer 200 
    protected _header => object HTTP_Header(0) { 
    } 
    protected _body => string(0) "" 
    protected _cookies => array(0) 
    protected _protocol => string(8) "HTTP/1.1" 
} 

2. SYSPATH /類/ Kohana的/ Request.php [993]»Kohana_Request_Client->執行(參數)

object Request(19) { 
    protected _requested_with => NULL 
    protected _method => string(3) "GET" 
    protected _protocol => string(8) "HTTP/1.1" 
    protected _secure => bool FALSE 
    protected _referrer => NULL 
    protected _route => object Route(5) { 
     protected _filters => array(0) 
     protected _uri => string(32) "(<controller>(/<action>(/<id>)))" 
     protected _regex => array(0) 
     protected _defaults => array(3) (
      "directory" => string(4) "site" 
      "controller" => string(4) "test" 
      "action" => string(5) "index" 
     ) 
     protected _route_regex => string(95) "#^(?:(?P<controller>[^/.,;?\n]++)(?:/(?P<action>[^/.,;?\n]++)(?:/(?P<id>[^/.,;?\n]++))?)?)?$#uD" 
    } 
    protected _routes => array(0) 
    protected _header => object HTTP_Header(0) { 
    } 
    protected _body => NULL 
    protected _directory => string(4) "Site" 
    protected _controller => string(4) "Test" 
    protected _action => string(5) "index" 
    protected _uri => string(0) "" 
    protected _external => bool FALSE 
    protected _params => array(0) 
    protected _get => array(0) 
    protected _post => array(0) 
    protected _cookies => array(0) 
    protected _client => object Request_Client_Internal(9) { 
     protected _previous_environment => NULL 
     protected _cache => NULL 
     protected _follow => bool FALSE 
     protected _follow_headers => array(1) (
      0 => string(13) "authorization" 
     ) 
     protected _strict_redirect => bool TRUE 
     protected _header_callbacks => array(1) (
      "Location" => string(34) "Request_Client::on_header_location" 
     ) 
     protected _max_callback_depth => integer 5 
     protected _callback_depth => integer 1 
     protected _callback_params => array(0) 
    } 
} 

3. DOCROOT/index.php的[118]» Kohana_Request->執行()

113  /** 
114  * Execute the main request. A source of the URI can be passed, eg: $_SERVER['PATH_INFO']. 
115  * If no source is specified, the URI will be automatically detected. 
116  */ 
117  echo Request::factory(TRUE, array(), FALSE) 
118   ->execute() 
119   ->send_headers(TRUE) 
120   ->body(); 
121 } 

內部。PHPecho Debug::vars($_SERVER,$request,$request->uri())

echo Debug::vars($_SERVER,$request,$request->uri());    


      if (! class_exists($prefix.$controller)) 
      { 
       throw HTTP_Exception::factory(404, 
        'The requested URL :uri was not found on this server.', 
        array(':uri' => $request->uri()) 
       )->request($request); 
      } 

轉儲:

array(29) (
    "HTTP_HOST" => string(8) "kohanafr" 
    "HTTP_USER_AGENT" => string(74) "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:44.0) Gecko/20100101 Firefox/44.0" 
    "HTTP_ACCEPT" => string(63) "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" 
    "HTTP_ACCEPT_LANGUAGE" => string(14) "en-US,en;q=0.5" 
    "HTTP_ACCEPT_ENCODING" => string(13) "gzip, deflate" 
    "HTTP_CONNECTION" => string(10) "keep-alive" 
    "PATH" => string(60) "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" 
    "SERVER_SIGNATURE" => string(69) "<address>Apache/2.4.10 (Ubuntu) Server at kohanafr Port 80</address> 
" 
    "SERVER_SOFTWARE" => string(22) "Apache/2.4.10 (Ubuntu)" 
    "SERVER_NAME" => string(8) "kohanafr" 
    "SERVER_ADDR" => string(9) "127.0.0.1" 
    "SERVER_PORT" => string(2) "80" 
    "REMOTE_ADDR" => string(9) "127.0.0.1" 
    "DOCUMENT_ROOT" => string(22) "/var/www/html/kohanafr" 
    "REQUEST_SCHEME" => string(4) "http" 
    "CONTEXT_PREFIX" => string(0) "" 
    "CONTEXT_DOCUMENT_ROOT" => string(22) "/var/www/html/kohanafr" 
    "SERVER_ADMIN" => string(19) "[email protected]" 
    "SCRIPT_FILENAME" => string(32) "/var/www/html/kohanafr/index.php" 
    "REMOTE_PORT" => string(5) "43568" 
    "GATEWAY_INTERFACE" => string(7) "CGI/1.1" 
    "SERVER_PROTOCOL" => string(8) "HTTP/1.1" 
    "REQUEST_METHOD" => string(3) "GET" 
    "QUERY_STRING" => string(0) "" 
    "REQUEST_URI" => string(1) "/" 
    "SCRIPT_NAME" => string(10) "/index.php" 
    "PHP_SELF" => string(10) "/index.php" 
    "REQUEST_TIME_FLOAT" => float 1474108538.614 
    "REQUEST_TIME" => integer 1474108538 
) 
object Request(19) { 
    protected _requested_with => NULL 
    protected _method => string(3) "GET" 
    protected _protocol => string(8) "HTTP/1.1" 
    protected _secure => bool FALSE 
    protected _referrer => NULL 
    protected _route => object Route(5) { 
     protected _filters => array(0) 
     protected _uri => string(32) "(<controller>(/<action>(/<id>)))" 
     protected _regex => array(0) 
     protected _defaults => array(3) (
      "directory" => string(4) "site" 
      "controller" => string(4) "test" 
      "action" => string(5) "index" 
     ) 
     protected _route_regex => string(95) "#^(?:(?P<controller>[^/.,;?\n]++)(?:/(?P<action>[^/.,;?\n]++)(?:/(?P<id>[^/.,;?\n]++))?)?)?$#uD" 
    } 
    protected _routes => array(0) 
    protected _header => object HTTP_Header(0) { 
    } 
    protected _body => NULL 
    protected _directory => string(4) "Site" 
    protected _controller => string(4) "Test" 
    protected _action => string(5) "index" 
    protected _uri => string(0) "" 
    protected _external => bool FALSE 
    protected _params => array(0) 
    protected _get => array(0) 
    protected _post => array(0) 
    protected _cookies => array(0) 
    protected _client => object Request_Client_Internal(9) { 
     protected _previous_environment => NULL 
     protected _cache => NULL 
     protected _follow => bool FALSE 
     protected _follow_headers => array(1) (
      0 => string(13) "authorization" 
     ) 
     protected _strict_redirect => bool TRUE 
     protected _header_callbacks => array(1) (
      "Location" => string(34) "Request_Client::on_header_location" 
     ) 
     protected _max_callback_depth => integer 5 
     protected _callback_depth => integer 1 
     protected _callback_params => array(0) 
    } 
} 
string(1) "/" 

回答

0

defaults()需求directory的價值的情況下,符合該目錄的名稱,所以你需要:

Route::set('default', '(<controller>(/<action>(/<id>)))') 
    ->defaults(array(
     'directory' => 'Site' /* Note capital 'S' */ 
     'controller' => 'test', 
     'action'  => 'index', 
    )); 
0

看看這個:

Route::set('default', '(<controller>(/<action>(/<id>)))') 
    ->defaults(array(
     'directory' => 'site' 
     'controller' => 'test', 
     'action'  => 'index', 
    )); 

您的路線中沒有«目錄»部分。所以,當你打開控制器/網站/測試,它會被解析這種方式:

controller => Controller 
action => Site 
id => Test 

修復你的路由

相關問題