从 xampp 移动到 apache 2.4.7 后,Laravel 路由返回 404。 mod_rewrite aur htaccess 或缺少 apache 设置?
Posted
技术标签:
【中文标题】从 xampp 移动到 apache 2.4.7 后,Laravel 路由返回 404。 mod_rewrite aur htaccess 或缺少 apache 设置?【英文标题】:Laravel routes returning 404 after move from xampp to apache 2.4.7. mod_rewrite or htacess or missing apache setting? 【发布时间】:2014-02-12 00:06:02 【问题描述】:一个简单的“测试”路由不断返回 404。
Route::get('test', function()
return View::make('test');
);
无论是 localhost/test 还是 vhost.dev/test ,甚至在使用我们的 sub.domain.com/test 并且 DNS 指向该特定笔记本电脑时,该路由都不起作用。
我们使用 XAMPP,但在得知 xampp 不适合生产环境后切换到 apache。所以我在我们的一台 win7 笔记本电脑上安装了 apache 2.4.7、php 和各种 sqlsrv 模块。迁移到 Apache 后,即使使用相同的目录结构,所有路由也已停止工作。
我还尝试将 /public 中的所有文件移动到 /htdocs 中,并将应用程序的其余部分移动到根 apache2.4 文件夹中的 laravel 文件夹中。
我测试了是否使用this code on SO 启用了 mod_rewrite。这是响应,所以我想它正在工作?
Apache/2.4.7 (Win32) PHP/5.4.24
mod_rewrite 可用
htaccess
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
【问题讨论】:
我尝试安装一个全新的 laravel 副本,完全默认。我添加了上面的测试路线,但我仍然遇到同样的问题,所以我想可以肯定地说这是 mod_rewrite 或 apache 设置问题?谁能告诉我如何解决这个问题? localhost/index.php/test 工作正常吗? 不。请参阅下面的答案。 【参考方案1】:This was answered on the Laravel forums.
问题是因为 AllowOverride
在 Apache 中设置为 None
。将其更改为 All
解决了所有路由问题。
这是帖子中的示例虚拟主机配置:
<VirtualHost *:80>
ServerAdmin youremail@yahoo.com
ServerName yoursite.com
ServerAlias www.yoursite.com
DocumentRoot "/var/www/yoursite.com/public"
<Directory /var/www/yoursite.com/public>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
【讨论】:
【参考方案2】:是否在新服务器上启用了 mod_rewrite?
a2enmod rewrite
【讨论】:
【参考方案3】:您应该尝试http://localhost/laravel/public/index.php/test
,这应该可以。另外你应该考虑使用 nginx 作为服务器,它比 apache 更灵活。
在上面的 http 链接中,laravel 是你的 laravel 目录
【讨论】:
那也行得通。它没有去测试“路线”,而是去搜索不存在的测试“目录”。以上是关于从 xampp 移动到 apache 2.4.7 后,Laravel 路由返回 404。 mod_rewrite aur htaccess 或缺少 apache 设置?的主要内容,如果未能解决你的问题,请参考以下文章
在 ubuntu 13.10 上从 XAMPP 移动到 LAMP 后 htaccess 不起作用(在 apache linux 服务器中启用 htaccess)