Laravel 路由和 .htaccess 文件不适用于 1and1 托管
Posted
技术标签:
【中文标题】Laravel 路由和 .htaccess 文件不适用于 1and1 托管【英文标题】:Laravel routes & .htaccess file not working on 1and1 hosting 【发布时间】:2015-04-27 10:24:02 【问题描述】:我的客户最近从 1and1.com 托管公司购买了 linux 1&1 无限包。我在 Laravel 4.2 框架中为他构建了应用程序。该应用程序在我的本地机器以及我自己的 VPS 上运行得非常好。但是当我在客户端主机上设置文件时,看起来 .htaccess 文件不起作用。这就是为什么,laravel 路由不起作用,我在尝试访问站点的不同路由时不断收到 404 错误消息。
我对这个问题进行了很多研究,发现很多人都遇到了同样的问题,但找不到解决这个问题的真正方法。
这是 .htaccess 代码:
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_FILENAME !-f
RewriteRule ^ index.php [L]
</IfModule>
我正在使用 Laravel 4.2
【问题讨论】:
服务器上是否启用了 mod_rewrite?你的虚拟主机指向公用文件夹吗? 我真的不能说,因为我提到我的客户从 1and1.com 购买了这个共享主机,我无权访问他们的 httpd.conf 文件 看看这个answer。 【参考方案1】:我在 1&1 托管解决方案中遇到了同样的问题。我建议添加:
RewriteBase /
这对我有用。
一切顺利, M
【讨论】:
这对我有用,但我也在使用laravel.com/docs/5.0/configuration#pretty-urls 中显示的替代.htaccess
配置【参考方案2】:
我使用 Laravel 5.2,谢谢,它也适用于我,谢谢 我将 RewriteBase 添加到我的 .htaccess 文件中
<IfModule mod_rewrite.c>
RewriteBase /
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_FILENAME !-f
RewriteRule ^ index.php [L]
</IfModule>
【讨论】:
我正在使用 laravel 5.6【参考方案3】:这对我有用,我的.htaccess
中只有以下内容
RewriteBase /
Options +FollowSymLinks
RewriteEngine On
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_FILENAME !-f
RewriteRule ^ index.php [L]
【讨论】:
以上是关于Laravel 路由和 .htaccess 文件不适用于 1and1 托管的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 路由和 .htaccess 文件不适用于 1and1 托管
laravel5.2 移植到新服务器上除了“/”路由 ,其它路由对应的页面显示报404错误(Object not found!)———新装的LAMP没有加载Rewrite模块
从 xampp 移动到 apache 2.4.7 后,Laravel 路由返回 404。 mod_rewrite aur htaccess 或缺少 apache 设置?