首页 > 解决方案 > 在 Google Cloud 的 centos 上运行的 Code Igniter 上的内部服务器错误 500

问题描述

我正在运行一个基于 CI 的 Web 应用程序,该应用程序在其旧服务器上运行良好,但我正在将其迁移到谷歌云上的 centos 7/cwp 实例。

在我设置了我通常如何设置 CI 之后,我得到了 HTTP 500 和内部服务器错误。

我怀疑它与.htacess有关,但我不知道出了什么问题。任何帮助表示赞赏!

它在谷歌云实例上的 centos 7 上运行 CWP。我做过的事情:

  1. 启用 mod_rewrite
  2. 安装了 php-mysqli
  3. 为 mysql 和 mysqli 扩展编辑了 php.ini
  4. 做了一个新的.htaccess
  5. 似乎在 apache 日志中看不到任何错误

以下是我当前来自旧服务器的 .htaccess 文件:

# 301 Redirect URLs.
Redirect 301 /www.example.com/example/about-us https://www.example.com/home/pages/about-us

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

//RewriteCond %{REQUEST_URI} !^/\.well-known/cpanel-dcv/[0-9a-zA-Z_-]+$
//RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/(?:\ Ballot169)?
//RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
//RewriteRule . index.php
RewriteCond %{HTTPS} off
//RewriteCond %{REQUEST_URI} !^/\.well-known/cpanel-dcv/[0-9a-zA-Z_-]+$
//RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/(?:\ Ballot169)?
//RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9] {32}\.txt(?:\ Comodo\ DCV)?$
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

</IfModule>

<IfModule !mod_rewrite.c>
ErrorDocument 404 /index.php
</IfModule>

<Files 403.shtml>
order allow,deny
allow from all
</Files>

RewriteCond %{HTTP_HOST} ^\*\.example\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.\*\.example\.com$
//RewriteCond %{REQUEST_URI} !^/\.well-known/cpanel-dcv/[0-9a-zA-Z_-]+$
//RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/(?:\ Ballot169)?
//RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteRule ^/?$ "https\:\/\/www\.example\.com" [R=301,L]

RewriteCond %{HTTP_HOST} ^example.com$
//RewriteCond %{REQUEST_URI} !^/\.well-known/cpanel-dcv/[0-9a-zA-Z_-]+$
//RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/(?:\ Ballot169)?
//RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteRule ^/?$ "https\:\/\/www\.example\.com\/" [R=301,L]

当我使用上面的 .htaccess (使用 // 旧的 cpanel modrewrites,我收到内部服务器错误消息)时,当我删除 .htaccess 或将 .htaccess 替换为其他或标准 CI .htaccess 时,我只会收到 HTTP 500 错误。

标签: phpapache.htaccessmod-rewrite

解决方案


使用 // 旧的 cpanel modrewrites,我收到内部服务器错误消息

您不能//用来注释掉配置行.htaccess- 这当然可以解释您立即出现的 500 错误。您需要使用#,如配置文件的第一行所示。

//RewriteRule . index.php

你不应该注释掉这一行——没有这个 CI 将无法路由你的 URL。

当我删除 .htaccess 或将 .htaccess 替换为其他或标准 CI .htaccess 时,我只会收到 HTTP 500 错误。

这很可能是一个不同的问题,因此我们需要查看.htaccess您正在使用的确切文件。

顺便说一句,“内部服务器错误”和“HTTP 500 错误”是一回事——您似乎是在暗示它们不同?

如评论中所述,您应该检查服务器的错误日志以了解此错误的详细信息。

RewriteCond %{HTTP_HOST} ^\*\.example\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.\*\.example\.com$
//RewriteCond %{REQUEST_URI} !^/\.well-known/cpanel-dcv/[0-9a-zA-Z_-]+$
//RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/(?:\ Ballot169)?
//RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteRule ^/?$ "https\:\/\/www\.example\.com" [R=301,L]

这应该是做什么的?(它在当前状态下不做任何事情。)

RewriteCond %{HTTP_HOST} ^example.com$
//RewriteCond %{REQUEST_URI} !^/\.well-known/cpanel-dcv/[0-9a-zA-Z_-]+$
//RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/(?:\ Ballot169)?
//RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteRule ^/?$ "https\:\/\/www\.example\.com\/" [R=301,L]

这只会规范化对文档根的请求。它不会对任何其他 URL 执行任何操作。但是,它也在配置文件中的错误位置,并且可能无论如何都没有做任何事情。它需要位于文件顶部,位于 CI 前端控制器之前。


推荐阅读