php - 在 Google Cloud 的 centos 上运行的 Code Igniter 上的内部服务器错误 500
问题描述
我正在运行一个基于 CI 的 Web 应用程序,该应用程序在其旧服务器上运行良好,但我正在将其迁移到谷歌云上的 centos 7/cwp 实例。
在我设置了我通常如何设置 CI 之后,我得到了 HTTP 500 和内部服务器错误。
我怀疑它与.htacess有关,但我不知道出了什么问题。任何帮助表示赞赏!
它在谷歌云实例上的 centos 7 上运行 CWP。我做过的事情:
- 启用 mod_rewrite
- 安装了 php-mysqli
- 为 mysql 和 mysqli 扩展编辑了 php.ini
- 做了一个新的.htaccess
- 似乎在 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 错误。
解决方案
使用 // 旧的 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 前端控制器之前。
推荐阅读
- python - 无法使用两次以“打开(文件名)”打开的同一文件
- python-3.x - 进程以退出代码 -1073740940 和 Numba 完成
- php - 格式化 array_sum 中的数组中的数字
- mysql - 连接到 MySQL 服务器计算机
- p5.js - 为 p5.js 旋转
- excel - 根据excel中的时间戳调整时间和日期
- vue.js - 在 vue.js 中使用 vee-validate 验证之前和未来的日期
- java - 不明白 Foo 和 Foo 的区别
和 Foo > - spring-mvc - Tomcat UserDatabase 创建 MBean 时出现意外错误
- php - MySQL 数组 foreach 循环 w/smartyphp