我在这里写下我的步骤和发现,这样你就可以看到我尝试了什么以及我得到了什么结果。任何建议都会受到欢迎。我遵循了这个答案中的评论。
我正在运行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_public
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
文件并立即得到一个错误,所以我知道我的.htaccess
文件正在被使用。
然后:
尝试删除
IfModule
条件。由于您可以访问主机/虚拟主机,因此您可以很快启用该模块(如果不是) - 因此不需要在每个请求上都检查它。同样,尝试将其移出.htaccess
, 并移入<Directory />...</Directory>
您的虚拟主机中的一个块 - 如果您的 .htaccess 中没有其他内容,则也可以将其删除。
- 有一个空
.htaccess
文件导致404
我的浏览器出现错误http://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
指向他的Sites
文件夹根目录的地方,当我在浏览器中运行它们时,我都得到了一个Error 400 - Bad request
。http://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 -在职的
我应该在哪里改变?我错过了什么?