Php webhost上子文件夹中的Larvel

Php webhost上子文件夹中的Larvel,php,apache,.htaccess,laravel,Php,Apache,.htaccess,Laravel,我有一个用Laravel编写的web应用程序,需要在web主机上的文件夹中运行。 必须通过hostname.com/webhit/访问该应用程序。这将指向应用程序的主页 我只有一条路线: Route::controller('/', 'HomeController'); HomeController的getIndex需要为主页提供服务这很有效。 但是,只要我想转到类似于hostname.com/webhit/login,我就会从Apache获得404 显然,.htaccess工作不正常。基本上

我有一个用Laravel编写的web应用程序,需要在web主机上的文件夹中运行。 必须通过
hostname.com/webhit/
访问该应用程序。这将指向应用程序的主页

我只有一条路线:

Route::controller('/', 'HomeController');
HomeController的getIndex需要为主页提供服务这很有效。

但是,只要我想转到类似于
hostname.com/webhit/login
,我就会从Apache获得404

显然,
.htaccess
工作不正常。基本上,我需要它将类似于
hostname.com/webhit/login
的URL转换为
hostname.com/webhit/index.php/login

我在
www/webhit
中有一个
.htaccess
文件(位于
index.php
的位置),看起来像这样:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
            Options -MultiViews
        </IfModule>

    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ webhit/index.php/$1 [L]
</IfModule>

选项-多视图
重新启动发动机
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则^(.*)$webhit/index.php/$1[L]
我不太熟悉
.htaccess
文件语法,但我认为它有问题

编辑: 我做到了。我的
.htaccess
是错误的(它实际上导致了一个重定向循环),但问题是它甚至没有被Apache解析(因此在一个请求中,由于重定向次数超过10次,所以是404而不是500)。为了让一切正常工作,我执行了以下步骤:

  • 启用
    mod_rewrite
    并重新启动Apache(关于如何执行此操作的大量文档)
  • 但是等等,还有更多!默认情况下,Ubuntu上的Apache阻止URL重写。最重要的是,上面URL中的以下片段非常重要:“默认情况下,Ubuntu的Apache将忽略.htaccess文件中的指令。”您需要通过编辑
    \etc\apache2\sites available\default
    并将AllowOverride设置为all来启用重写(有关更多详细信息,请参阅上面的链接)
  • 重新加载配置(或者重新启动apache)
  • 确保您使用的是正确的
    .htaccess
    。我的原始版本中实际上有一个重定向循环。有关正确的版本,请参阅所选的响应

  • 在此之后,我让它开始工作。我希望它能帮助未来的程序员解决类似问题!

    检查默认服务器要求-laravel.htaccess文件适用于大多数情况。尝试以下方法:

    <IfModule mod_rewrite.c>
        Options -MultiViews
        RewriteEngine On
    
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^ index.php [L]
    </IfModule>
    
    
    选项-多视图
    重新启动发动机
    重写cond%{REQUEST_FILENAME}!-d
    重写cond%{REQUEST_FILENAME}!-f
    重写规则^index.php[L]
    
    我建议您使用足智多谋的控制器-从路由到控制器的映射方法更加清晰,您将获得完整的
    只需一个命令即可获得资源(路由、模型、视图、控制器)

    感谢您的响应!我也尝试了默认的laravel.htaccess,但没有效果。我将尽快尝试此版本,并返回更多信息。此外,我正在使用资源丰富的控制器!我的主页正在
    getIndex()中处理
    。我注意到
    mod\u rewrite
    被禁用。我启用了它(现在在执行
    print\r(apache\u get\u modules());die();
    时显示),重新启动了Apache,更新了
    .htaccess
    文件,但我仍然收到404个错误。好的,我将用我采取的其他步骤编辑我的问题。我必须启用模块本身,并实际告诉Apache进行重写。