我们在主域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,在子域上运行其他东西。
答案 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 文件从原始域复制到子域文件夹(在这种情况下)是完全相同的应用程序)。