我尝试使用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和我的虚拟主机中的重写
答案 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是正确的。