Laravel 子域 500 错误

Laravel subdomain 500 error

我们 运行ning 在共享主机上 运行ning laravel 在主域 example.com 上,一切正常。

我们通过访问 cPanel 中的 子域管理器 创建了一个 sudbomain test.example.com 并将其文档根目录指向 /public_html/test

我们一访问 test.example.com 就得到 500 内部服务器错误

初始laravel的.htaccess是

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

    RewriteEngine On

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

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

我们变了

    RewriteRule ^ index.php [L]

    RewriteRule ^ /index.php [L]

现在,如果我们访问 test.example.com,它会重定向到 tests.example.com/test,一切正常。

但我们不确定为什么它会将浏览器重定向到 tests.example.com/test

已更新

经过进一步研究,我们发现。

如果我们去掉这一行。

RewriteRule ^(.*)/$ / [L,R=301]

那么主域和子域都可以正常工作。但是去掉这一行可以吗

简而言之,我们想 运行 laravel 在主域上,在子域上做其他事情。

您可以对 test 子域添加限制。
此外,您必须避免删除文件夹的尾部斜线(否则:循环 -> 500 错误)。

您的 htaccess 将变成

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

    RewriteEngine On

    # Don't touch anything when coming from test subdomain
    RewriteCond %{HTTP_HOST} ^test\. [NC]
    RewriteRule ^ - [L]

    # Redirect Trailing Slashes...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.+)/$ / [L,R=301]

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

就我而言,子域 public_html 文件夹中没有 .htaccess 文件,因此如果您使用的是子域,只需将 .htaccess 文件从原始域复制到子域文件夹(在这种情况下是完全相同的应用程序)。