由于.htaccess文件,Laravel 4路由无法正常工作?

时间:2013-09-17 20:31:07

标签: .htaccess laravel laravel-4 vhosts

我在这里写下我的步骤和发现,这样你就可以看到我尝试过的东西以及我得到的结果。任何建议都会受到欢迎。我按照this answer中的评论。

我在Windows 7计算机上使用Laravel 4运行XAMMP version 1.8.2 with PHP 5.4.19 and 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,请注意自上一次以来的更改   版本,关于a中的Require all grantedAllowOverride all   <{1}}阻止您的虚拟主机。

我按照Dalton Gore的建议在<Directory />...</Directory>添加了此内容 - 得到httpd.conf file错误(将此目录路径更改为Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException/SOS/sos_public以及{{ 1}} - 相同的结果):

C:/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条件。因为你有权访问   host / vhost,你可以很快启用该模块,如果它不是 - 所以它   不需要在每个请求上进行检查。同样,尝试将其移出   .htaccess的{​​{1}},以及IfModule块   vhost - 如果你的.htaccess中没有别的东西那么它就可以了   也删除了。

  • 我的浏览器中.htaccess<Directory />...</Directory>.htaccess错误导致404http://localhost/sos/sos_public/signup仍然有效)。
  • http://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文件夹根目录,否则我在SitesError 400 - Bad request处获得了http://localhost/sos/sos_public/浏览器。

我的http://localhost/sos/sos_public/signup文件看起来像这样:

httpd-vhosts.conf

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

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

最后:

  

你肯定有127.0.0.1 sos.dev 个文件   在主conf/extra/httpd-vhosts.conf中包含(取消注释)?

我没有注释 - 是的。

我试过的另一个链接却无效:https://stackoverflow.com/a/17778222/956975http://www.epigroove.com/blog/laravel-routes-not-working-make-sure-htaccess-is-working

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

1 个答案:

答案 0 :(得分:1)

您的ServerName是

sos.dev

apache考虑到这一点,你必须使用以下方式访问你的路线:

http://sos.dev/

而不是

http://localhost/