2

我在这里写下我的步骤和发现,这样你就可以看到我尝试了什么以及我得到了什么结果。任何建议都会受到欢迎。我遵循了这个答案中的评论。

我正在运行Laravel 4,在 Windows 7 机器上使用XAMMP 版本 1.8.2 和 PHP 5.4.19 和 Apache 2.4.4,我只是仍在尝试启动并运行本地实例。

在我的情况下:http://localhost/sos/sos_public/是我的主屏幕并且有效,但是当我尝试访问时,http://localhost/sos/sos_public/signup我得到了这个错误:Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException这已经在网上讨论了很多,然后我发现GaryJ说这可能是一个.htaccess问题,所以我做了他的建议。

我的文件看起来像这样(我之前/app/routes.php也试过这个):/signup

Route::get('signup', function()
{
    return 'hello!';
});     

Route::get('/', function()
{
    return View::make('hello');
});

第一的:

只是为了笑,看看是否/index.php/hello有效。如果是这样,那就有.htaccess问题了。

http://localhost/sos/sos_public/index.php/signup工作得很好。所以这是个.htaccess问题。

我的.htaccess文件看起来像这样:

<IfModule mod_rewrite.c>
    Options -MultiViews
    RewriteEngine On

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

和:

如果您正在运行Apache 2.4,请注意自以前版本以来的更改,关于您的虚拟主机上的Require all granted一个AllowOverride all块 。<Directory />...</Directory>

我按照Dalton Gorehttpd.conf file的建议在我的文件中添加了这个- 得到了错误(将此目录路径更改为和-相同的结果):Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException/SOS/sos_publicC:/xammp/htdocs/SOS/sos_public/C:/xammp/htdocs/SOS/sos_public

<Directory />
    AllowOverride none
    Require all denied
</Directory>
<Directory /SOS/sos_public>
    AllowOverride all
    Require all granted
</Directory>

下一个:

检查是否有任何东西在.htaccess工作

我添加dsjkdsfghk到我的.htaccess文件并立即得到一个错误,所以我知道我的.htaccess文件正在被使用。

然后:

尝试删除IfModule条件。由于您可以访问主机/虚拟主机,因此您可以很快启用该模块(如果不是) - 因此不需要在每个请求上都检查它。同样,尝试将其移出.htaccess, 并移入<Directory />...</Directory>您的虚拟主机中的一个块 - 如果您的 .htaccess 中没有其他内容,则也可以将其删除。

  • 有一个空.htaccess文件导致404我的浏览器出现错误http://localhost/sos/sos_public/signuphttp://localhost/sos/sos_public/仍然有效)。
  • 从中删除.htaccess文件C:\xampp\htdocs\SOS\sos_public\具有相同的结果。

然后:

尝试:<VirtualHost *:80> DocumentRoot "/Users/amiterandole/Sites/laravelbackbone/public" ServerName laravelbackbone.dev <Directory /> AllowOverride all Require all granted </Directory> <IfModule mod_rewrite.c> Options -MultiViews RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </IfModule> </VirtualHost>

我这样做了,就像阿米特一样,

我清空了我的htaccess文件并尝试了上述方法,但现在似乎没有任何效果。

除了他laravelbackbone.dev指向他的Sites文件夹根目录的地方,当我在浏览器中运行它们时,我都得到了一个Error 400 - Bad requesthttp://localhost/sos/sos_public/http://localhost/sos/sos_public/signup

我的httpd-vhosts.conf文件看起来像这样:

<VirtualHost *:80> 
    DocumentRoot "C:/xammp/htdocs/SOS/sos_public" 
    ServerName sos.dev
    <Directory /> 
        AllowOverride all 
        Require all granted 
    </Directory> 
    <IfModule mod_rewrite.c> 
        Options -MultiViews 
        RewriteEngine On 
        RewriteCond %{REQUEST_FILENAME} !-f 
        RewriteRule ^ index.php [L] 
    </IfModule> 
</VirtualHost>

在我的 .hosts 文件中,我显然有:

127.0.0.1       sos.dev

最后:

您肯定已将conf/extra/httpd-vhosts.conf文件包含(未注释)在 main 中httpd.conf

我有这个未注释 - 是的。

我尝试了另一个链接但无济于事:https ://stackoverflow.com/a/17778222/956975和http://www.epigroove.com/blog/laravel-routes-not-working-make-sure-htaccess-is -在职的

我应该在哪里改变?我错过了什么?

4

1 回答 1

1

您的服务器名称是

sos.dev

并且 apache 考虑到这一点,您必须使用以下命令访问您的路线:

http://sos.dev/

并不是

http://localhost/
于 2013-09-17T21:17:42.570 回答