0

我最近将我的应用程序从 Windows localhost 迁移到了 linux 主机。

我的问题是我无法访问控制器,我总是不断收到消息:找不到文件。(来自网络服务器)

这很奇怪,因为相同的代码库正在我的本地主机上运行。

引导程序.php:

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

.ht 访问:

# Turn on URL rewriting
RewriteEngine On

# Installation directory
RewriteBase /


# 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]

这里发生的奇怪的事情是,如果我去:www.myapp.com/ 然后默认控制器执行并找到用户/索引函数。

但是,如果我手动将其写为 www.myapp.com/user/index,我会不断收到 File not found 消息。

我已经尝试用小写重命名控制器文件,所以我想这不是问题,如果那会是问题,那么默认路由首先不会找到它,对吧?

例如,如果我在默认路由中写入:

Route::set('default', '(<controller>(/<action>(/<id>)(/<param1>)(/<param2>)))')
    ->defaults(array(
        'controller' => 'user',
        'action'     => 'login',
                  'param1' =>'',
                  'param2' =>'',
    ));

我访问 www.myapp.com ,它会加载用户功能。我不知道这里出了什么问题,为什么当我写 myapp.com/user/login 时它说找不到文件,但是如果我把它作为默认路由它会打开它。

4

2 回答 2

0

你在 bootstrap.php 中设置了 base_url 吗?如果没有,你应该设置 base_url your_project_name/

如果是,你应该在你的 .htaccess 中设置 RewriteBase /your_project_name/

于 2013-09-16T09:09:31.377 回答
0

我在与此相关的另一个线程中找到了解决方案。您需要将这段代码添加到 .htaccess 中:

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

希望它可以帮助其他人!

于 2014-05-12T10:16:38.840 回答