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 托管

从htaccess密码保护中排除特定的laravel路由

Htaccess 重定向 Laravel 4

laravel5.2 移植到新服务器上除了“/”路由 ,其它路由对应的页面显示报404错误(Object not found!)———新装的LAMP没有加载Rewrite模块

laravel 5.1路由直接到公共文件夹

从 xampp 移动到 apache 2.4.7 后,Laravel 路由返回 404。 mod_rewrite aur htaccess 或缺少 apache 设置?