要求的网址未找到laravel 4

时间:2014-05-06 16:41:39

标签: php apache .htaccess laravel-4

我尝试使用laravel 4创建应用,但我正面临网址问题。我已经在我的机器上安装了wamp。我使用此代码在我的httpd-vhost.conf中设置了一个新的虚拟主机

<VirtualHost mobile.dev>  
DocumentRoot "C:\wamp\www\mobile.dev\public"
ServerName mobile.dev

<Directory "C:\wamp\www\mobile.dev">
    Options FollowSymLinks Indexes
    AllowOverride All                  
    Order deny,allow
    Allow from 127.0.0.1
    Deny from all
    Require all granted     
</Directory>

mobile.dev是一个文件夹,也是我的localhost中的域名。 这是我的Route.php文件

Route::get('/','HomeController@showWelcome');


Route::post('login','LoginController@userLogin');

Route::get('login','LoginController@getUsers');

当我要求提供mobile.dev/login时,它给我找不到请求的网址。 你可以帮我解决这个问题。但是当我要求mobile.dev /它的工作时。

这是我的.htaccess文件:

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>

RewriteEngine On

# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

这是更多细节。当我删除我的htaccess内容时,一切正常,默认网址为http://mobile.dev/index.php/login 所以问题出在我的htaccess和我的虚拟主机中的重写

4 个答案:

答案 0 :(得分:5)

可能不是Laravel问题,但似乎您的wamp服务器尚未在mod_rewrite文件中启用httpd.conf。找到该行 -

#LoadModule rewrite_module modules/mod_rewrite.so

并删除评论符号&#39;#&#39;。然后保存文件并重新启动Apache。

答案 1 :(得分:2)

解决方案: 1-如果您的机器中安装了wamp,请转到C:\wamp\bin\apache\Apache*.*.*\conf\httpd.conf并确保通过删除散列标记启用了rewrite_mod。 (而不是使用wamp提供的接口)

2 - 在.htaccess文件中有两种方法可以重写laravel:

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>

RewriteEngine On

# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>

或使用此:

Options +FollowSymLinks
RewriteEngine On

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

3-如果您要设置虚拟主机,请务必在<virtualhost>标记中添加此选项

 <Directory "C:\wamp\www\mobile.dev\public">
            Options FollowSymLinks Indexes Multiviews
            AllowOverride All  
   </Directory>

非常感谢你的时间。

答案 2 :(得分:1)

你试过吗

Route::post('login','LoginController@userLogin');
用户登录后没有()的

答案 3 :(得分:0)

您的<Directory "C:\wamp\www\mobile.dev"> in config应为<Directory "C:\wamp\www\mobile.dev\public">,以指定htaccess重写规则根目录的公共目录。

我原本以为你错过了.htaccess文件末尾的</IfModule>,但是当我发布我的.htaccess文件时,它也隐藏了</IfModule>,这就是堆栈溢出问题。否则你的htaccess是正确的。