我正在做一个大学项目,我需要在云服务上部署该应用程序。我使用CodeIgniter作为框架,使用Google Cloud作为云服务。当我在localhost上对其进行测试时,该应用程序正常运行,但是当我将其托管在Google Cloud上时,无法将页面链接到Javascript / CSS / Images。
当我尝试链接它们时,出现以下错误:
https://---.---.com/public/css/template.css net::ERR_ABORTED 404
我已经尝试了许多CodeIgniter解决方案来解决此错误,例如更改.htaccess,更改文件夹结构以及使用资产链接帮助程序,但这些方法均无济于事,使我相信这是Google Cloud问题。
我尝试链接CSS的方法:
href="<?php echo base_url('css/template.css');?>"
href="<?php echo base_url();?>public/css/template.css"
href="<?php echo assets_url();?>css/template.css">
以及其他许多变体,例如绝对URL。
这些都不起作用: https://---.---.com/css/template.css https://---.---.com/public/css/template.css
我的文件夹结构如下:
|-.htaccess
|-application/
|-public/
|-.htaccess
|-index.php
|-css/
|-js/
|-img/
|-system
我从这个StackOverflow问题的第三个答案中得到了这种结构:Where do I put image files, css, js, etc. in Codeigniter?
“根” htaccess文件:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
</IfModule>
公共htaccess文件:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,L]
</IfModule>
我的应用程序Yaml是:
runtime: php72
handlers:
- url: .*
script: auto
- url: /public/img
static_dir: public/img
- url: /public/js
static_dir: public/js
- url: /public/css
static_dir: public/css
- url: /(.+\.(css|js))$
static_files: assets/\1
upload: assets/.+\.(css|js)$
我认为尝试访问公用文件夹中的文件时出现net::ERR_ABORTED 404
错误,可能是由于我的app.yaml。那可能吗?如果是这种情况,我应该对文件进行哪些更改,以便云服务能够访问它们?