我在这里写下我的步骤和发现,这样你就可以看到我尝试过的东西以及我得到的结果。任何建议都会受到欢迎。我按照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 granted
和AllowOverride 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
错误导致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
在我的.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/956975和http://www.epigroove.com/blog/laravel-routes-not-working-make-sure-htaccess-is-working
我应该在哪里改变? 我错过了什么?
答案 0 :(得分:1)
您的ServerName是
sos.dev
apache考虑到这一点,你必须使用以下方式访问你的路线:
http://sos.dev/
而不是
http://localhost/