Laravel子域500错误

时间:2015-01-18 18:50:18

标签: php apache .htaccess laravel-4

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

我们通过访问 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 ^(.*)/$ /$1 [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 ^(.*)/$ /$1 [L,R=301]

然后maindomain和subdomain都工作得非常好。但是删除这一行是否可以。

简而言之,我们希望在主域上运行laravel,在子域上运行其他东西。

2 个答案:

答案 0 :(得分:3)

您可以在test子域名上添加限制 此外,您必须避免删除文件夹的尾部斜杠(否则:loop - &gt; 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 ^(.+)/$ /$1 [L,R=301]

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

答案 1 :(得分:0)

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