Laravel 4 路由不工作是由于 .htaccess 文件引起的?

14 浏览
0 Comments

Laravel 4 路由不工作是由于 .htaccess 文件引起的?

我在这里写下我的步骤和发现,这样你就可以看到我尝试了什么以及得到了什么结果。欢迎提供任何建议。我按照这个答案中的评论进行操作。\n我正在运行Laravel 4,使用XAMMP 1.8.2版本,带有PHP 5.4.19和Apache 2.4.4 在Windows 7机器上,我仍在尝试启动本地实例。\n在我的情况下:http://localhost/sos/sos_public/是我的主屏幕,它可以正常工作,但是当我尝试访问http://localhost/sos/sos_public/signup时,我遇到了这个错误:Symfony \\ Component \\ HttpKernel \\ Exception \\ NotFoundHttpException 这个错误在网上被广为讨论,然后我发现GaryJ说这可能是一个.htaccess问题,所以我按照他的建议做了。\n我的/app/routes.php文件如下(我也尝试过在signup前面加上/):\n

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

\n首先:\n

\n只是试一下,看看/index.php/hello是否可以工作。如果可以,那么就是一个.htaccess问题。\n

\nhttp://localhost/sos/sos_public/index.php/signup完全正常工作。所以这是一个.htaccess问题。\n我的.htaccess文件如下:\n


    Options -MultiViews
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L] 

\n然后:\n

\n如果你正在运行Apache 2.4,请注意与之前版本的更改,关于Require all grantedAllowOverride all在虚拟主机的...块中。\n

\n我按照Dalton Gore的建议在我的httpd.conf文件中添加了以下内容(将此目录路径更改为/SOS/sos_publicC:/xammp/htdocs/SOS/sos_public/C:/xammp/htdocs/SOS/sos_public - 结果相同):\n


    AllowOverride none
    Require all denied


    AllowOverride all
    Require all granted

\n接下来:\n

\n检查.htaccess中的任何内容是否有效\n

\n我在我的.htaccess文件中添加了dsjkdsfghk,立即得到了一个错误,所以我知道我的.htaccess文件正在被使用。\n然后:\n

\n尝试删除IfModule条件。由于你可以访问主机/虚拟主机,如果模块未启用,你可以很快启用它,因此不需要在每个请求中进行检查。同样,尝试将其移出.htaccess,并将其放入虚拟主机的...块中 - 如果你的.htaccess中没有其他内容,那么它可以被删除。\n

\n

    \n

  • 一个空的.htaccess文件导致我的浏览器对http://localhost/sos/sos_public/signup返回404错误(http://localhost/sos/sos_public/仍然可以工作)。
  • \n

  • C:\\xampp\\htdocs\\SOS\\sos_public\\中删除.htaccess文件会产生相同的结果。
  • \n

\n然后:\n

\n尝试:

 DocumentRoot
  "/Users/amiterandole/Sites/laravelbackbone/public" ServerName
  laravelbackbone.dev  AllowOverride all Require all
  granted   Options -MultiViews
  RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^
  index.php [L]  

\n

\n我这样做了,就像Amit一样,\n

\n我清空了htaccess文件并尝试了上述方法,但现在什么都不起作用了。\n

\n除了他的laravelbackbone.dev指向他的Sites文件夹根目录,当我在浏览器中运行http://localhost/sos/sos_public/http://localhost/sos/sos_public/signup时,我只得到了一个Error 400 - Bad request。\n我的httpd-vhosts.conf文件如下:\n \n DocumentRoot \"C:/xammp/htdocs/SOS/sos_public\" \n ServerName sos.dev\n \n AllowOverride all \n Require all granted \n \n \n Options -MultiViews \n RewriteEngine On \n RewriteCond %{REQUEST_FILENAME} !-f \n RewriteRule ^ index.php [L] \n \n\n\n我在我的.hosts文件中明显有:\n

127.0.0.1       sos.dev

\n最后:\n

\n你确定在主要的httpd.conf中包含(取消注释)conf/extra/httpd-vhosts.conf文件吗?\n

\n我取消了注释 - 是的。\n我尝试了另一个链接,但没有成功:https://stackoverflow.com/a/17778222/956975http://www.epigroove.com/blog/laravel-routes-not-working-make-sure-htaccess-is-working\n我应该在哪里进行修改?\n我错过了什么?

0
0 Comments

Laravel 4路由不工作的原因可能是由于.htaccess文件的问题。解决该问题的方法是启用apache2中的重写引擎。

在Linux系统中,可以通过以下命令启用重写引擎:

sudo a2enmod rewrite

sudo systemctl restart apache2

在Windows系统中,如果在Apache中找不到httpd.conf文件,可以查找apache2.conf文件,它是httpd.conf的另一个名称,并启用重写模块。有关更多信息,请参考以下链接中的步骤:

Lost httpd.conf file located apache

0
0 Comments

问题的原因是在Laravel 4中路由没有工作是由于.htaccess文件的问题。解决方法是确保在访问路由时使用正确的ServerName,而不是使用localhost。

在这个问题中,ServerName是sos.dev。因此,应该使用http://sos.dev/来访问路由,而不是使用http://localhost/。

在这个问题中,出现了Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException错误,无论是使用sos.dev还是localhost,或者在添加VirtualHost时出现了Error 400 Bad request错误。

为了解决这个问题,可以在错误页面(Server/Request Data)中查看REDIRECT_QUERY_STRING和REDIRECT_URL的值。

0