Laravel 4路由因.htaccess文件而无法工作?

yh2wf1be  于 2022-11-16  发布在  其他
关注(0)|答案(2)|浏览(116)

我把我的步骤和发现写在这里,这样你就可以看到我尝试了什么,得到了什么结果。任何建议都是受欢迎的。我跟随了this answer中的评论。
我在Windows 7机器上运行Laravel 4,使用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,请注意自以前版本以来的更改,其中涉及虚拟主机上<Directory />...</Directory>块中的Require all grantedAllowOverride all
我按照Dalton Gore的建议在我的httpd.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条件。因为你已经有了host / vhost的访问权限,如果没有,你很快就可以启用这个模块--这样就不需要在每次请求时都检查它。同样,试着把它从.htaccess中移到vhost的<Directory />...</Directory>块中--如果你的.htaccess中没有其他内容,它也可以被删除。

  • 有一个空的.htaccess文件导致http://localhost/sos/sos_public/signup在我的浏览器中出现404错误(http://localhost/sos/sos_public/仍然工作)。
  • C:\xampp\htdocs\SOS\sos_public\中删除.htaccess文件会产生相同的结果。
    然后:

请尝试:<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>
我做到了,就像Amit一样
我清空了我的htaccess文件,并尝试了上述方法,现在似乎没有任何工作。
除了他的laravelbackbone.dev指向他的Sites文件夹根目录之外,当我在浏览器中运行http://localhost/sos/sos_public/http://localhost/sos/sos_public/signup时,我只得到了一个Error 400 - Bad request
我的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文件包含在主httpd.conf中了(未注解)?
我有这个未加评论-是的。
另一个链接我尝试但无济于事:https://stackoverflow.com/a/17778222/956975http://www.epigroove.com/blog/laravel-routes-not-working-make-sure-htaccess-is-working的数据类型
我应该在哪里改什么?我错过了什么?

aemubtdh

aemubtdh1#

您的服务器名称是

sos.dev

Apache考虑到这一点,您必须使用以下方式访问路由:

http://sos.dev/

而非

http://localhost/
vecaoik1

vecaoik12#

这可能是未在apache2中启用重写引擎的错误
在linux中,
sudo a2enmod rewrite
sudo systemctl restart apache2
在Windows中,
你应该找到httpd.conf文件,如果它在你的apache中不可用,寻找apache2. conf文件是httpd.conf的另一个名称,并启用重写模块以获得更多信息,或在这里查看如何在此链接中执行上述过程Lost httpd.conf file located apache

相关问题