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

2023-09-02 09:59:45 作者:空岭隐者

我在写我的步骤和结果在这里,所以你可以看到我已经试过,什么结果我得到了。任何建议将受到欢迎。我跟着这个答案。

I'm writing my steps and findings here so you can see what I've tried and what results I got. Any advice would be welcomed. I followed the comments in this answer.

我跑 Laravel 4 ,使用的 XAMMP版本1.8.2用PHP 5.4.19和Apache 2.4.4 Windows 7的机器上,我只是还在尝试启动和运行的本地实例。

I'm running Laravel 4, using XAMMP version 1.8.2 with PHP 5.4.19 and Apache 2.4.4 on a Windows 7 machine and I'm simply still trying to get a local instance up and running.

在我的情况:的http://本地主机/ SOS / sos_public / 是我的主屏幕,这样的作品,但是当我尝试去 HTTP://本地主机/ SOS / sos_public /注册我得到这个错误:的Symfony 分量 HttpKernel 异常 NotFoundHttpException 这已经讲过讲了很多上了网,然后我发现 GaryJ 说,它可能是一个的.htaccess 的问题,所以我做了什么,他建议说。

In my case: http://localhost/sos/sos_public/ is my main screen and that works, but when I try to get to http://localhost/sos/sos_public/signup I get this error: Symfony Component HttpKernel Exception NotFoundHttpException which has been talked about a lot on the net, and then I found GaryJ stating that it might be an .htaccess issue, so I did what he suggested.

我的 /app/routes.php 文件看起来像这样(我已经试过这与 / 的对前注册太):

My /app/routes.php file looks like this (I've tried this with a / in front of signup too):

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

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

第一:

只是一会笑,看看 /index.php/hello 的作品。如果是这样,那么这是一个的.htaccess 的问题。

Just for a laugh, see if /index.php/hello works. If so, then it's a .htaccess problem.

的http://localhost/sos/sos_public/index.php/signup 完全正常工作。所以这是一个的.htaccess 的问题。

http://localhost/sos/sos_public/index.php/signup worked perfectly fine. So it's an .htaccess problem.

我的的.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 ,注意因为previous的变化   版本,关于要求所有批准的AllowOverride所有中的   &LT;目录/&GT; ...&LT; /目录&GT; 您的虚拟主机上块

if you're running Apache 2.4, note the changes since previous versions, regarding Require all granted and AllowOverride all within a <Directory />...</Directory> block on your virtual host.

我说这在我的 httpd.conf文件所建议的道尔顿·戈尔 - 得到了的Symfony 分量 HttpKernel 异常 NotFoundHttpException 错误(改变了这一目录路径 / SOS / sos_public C:/ xammp / htdocs中/ SOS / sos_public / C:/ xammp / htdocs中/ SOS / sos_public - 同样的结果):

I added this in my httpd.conf file as suggested by Dalton Gore - got the Symfony Component HttpKernel Exception NotFoundHttpException error (changed this directory path to /SOS/sos_public and C:/xammp/htdocs/SOS/sos_public/ and C:/xammp/htdocs/SOS/sos_public - same results):

<Directory />
    AllowOverride none
    Require all denied
</Directory>
<Directory /SOS/sos_public>
    AllowOverride all
    Require all granted
</Directory>

下一步:

检查的.htaccess 什么是工作

我添加 dsjkdsfghk 我的的.htaccess 文件,并立即得到一个错误,所以我知道我的的.htaccess 文件正在被使用。

I added dsjkdsfghk to my .htaccess file and immediately got an error, so I know my .htaccess file is being used.

然后:

尝试删除 IfModule 的条件。当你有访问   主机/虚拟主机,你很快就可以启用模块,如果它不是 - 所以它   不需要在每次请求进行检查。同样,尝试移动它   对的.htaccess ,并进入&LT;目录/&GT; ...&LT; /目录&gt;在块的   虚拟主机 - 如果你有没有别的你的.htaccess就可以将其   删除。

laravel文件上传

Try removing the IfModule conditional. As you've got access to the host / vhost, you can soon enable that module if it's not - so it doesn't need be checked on every request. Equally, try moving it out of .htaccess, and into a <Directory />...</Directory> block in your vhost - if you've got nothing else in your .htaccess it can then be deleted as well. 有一个空的的.htaccess 文件引起了 404 在我的浏览器错误 HTTP ://本地主机/ SOS / sos_public /注册的http://本地主机/ SOS / sos_public / 仍然工作)。 从删除的.htaccess 文件C: XAMPP htdocs中 SOS sos_public 有同样的结果

Having an empty .htaccess file caused a 404 error in my browser for http://localhost/sos/sos_public/signup (http://localhost/sos/sos_public/ still worked). Removing the .htaccess file from C:xampphtdocsSOSsos_public had the same results.

然后:

尝试:&LT;虚拟主机*:80&GT;的DocumentRoot   /用户/ amiterandole /网站/ laravelbackbone /公众服务器名   laravelbackbone.dev&LT;目录/&GT;所有的AllowOverride要求所有   给予&LT; /目录&GT; &LT; IfModule mod_rewrite.c&GT;选项​​-MultiViews   RewriteEngine叙述上的RewriteCond%{} REQUEST_FILENAME!-f重写规则^   的index.php [1]; / IfModule&GT; &LT; /虚拟主机&GT;

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

我没有这一点,就像阿密特,

I did that and just like Amit,

我掏空了我的的htaccess 文件,并尝试了上面,现在什么   似乎工作。

I emptied out my htaccess file and tried the above and now nothing seems to work.

除非他的 laravelbackbone.dev 指着自己的网​​站文件夹的根,我只是得到了一个错误400 - 错误请求在两个的http://本地主机/ SOS / sos_public / 的http://本地主机/ SOS / sos_public /注册当我跑他们在我的浏览器。

Except where his laravelbackbone.dev pointed to his Sites folder root, I just got an Error 400 - Bad request on both http://localhost/sos/sos_public/ and http://localhost/sos/sos_public/signup when I ran them in my browser.

我的的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文件我明明有:

and in my .hosts file I obviously had:

127.0.0.1       sos.dev

最后:

您已经肯定了的的conf /加/的httpd-vhosts.conf 文件是   包括(取消注释)中的主的httpd.conf

You've definitely got the conf/extra/httpd-vhosts.conf file be included (uncommented) within the main httpd.conf?

我有这个取消注释 - 对

I have this uncommented - yes.

另一个链接我试过,但无济于事: http://stackoverflow.com/a/17778222/956975 并的http://www.epigroove.com/blog/laravel-routes-not-working-make-sure-htaccess-is-working

Another link I tried but to no avail: http://stackoverflow.com/a/17778222/956975 and http://www.epigroove.com/blog/laravel-routes-not-working-make-sure-htaccess-is-working

我应该改变在哪里? 我在想什么?

What should I change where? What am I missing?

推荐答案

您ServerName是

Your ServerName is

sos.dev

和阿帕奇借此考虑,你必须使用你的访问路线:

And apache take this in consideration, you you must access your routes using:

http://sos.dev/

而不是

http://localhost/