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