在 SilverStripe 3.1 中使用 htaccess 的子域出现 500 内部服务器错误

500 Internal Server Error for sub domain using htaccess in SilverStripe 3.1

我收到一个子域的 500 服务器错误。它在安装 SilverStripe 3 之前运行良好。是否需要对 SilverStripe 安装创建的默认 .htaccess 进行任何修改?

此答案根据您的问题做出了一些假设。

这些假设是

  • 您的 SilverStripe 网站是根网站(例如 http://www.example.com
  • 您的 SilverStripe 代码位于网站根目录中(例如 /public_html
  • 您的子域代码位于网站根目录的子文件夹中(例如 /public_html/sub

上述情况可能出现的问题是子域可能使用/public_html/.htaccess文件并使用其mod_rewrite规则。

为了解决这个问题,我们可以使用以下代码在子域 (/public_html/sub/.htaccess) 中创建一个 .htaccess 文件:

<IfModule mod_rewrite.c>
    SetEnv HTTP_MOD_REWRITE On
    RewriteEngine On
    RewriteBase /
</IfModule> 

这将告诉服务器不要使用 mod_rewrite 规则或根 .htaccess 文件的基础。

另一种解决方案是不将子域代码放在根 Web 目录的子文件夹中。您可以在根级别创建一个文件夹,例如 /sub 并将您的子域指向那里。

感谢大家的支持,但我的方法不同。 我已经从 cpanel 创建了子域,但选择了相同的根文件夹而不是创建新目录。
我从这里得到了帮助。 https://forums.cpanel.net/threads/domain-redirecting-to-cgi-sys-defaultwebpage-cgi.139597/page-3#post-656642