app.yaml导致Google Cloud托管的CodeIgniter应用程序上的JS / CSS文件出现404错误

时间:2019-06-21 19:19:41

标签: php codeigniter google-cloud-platform

我正在做一个大学项目,我需要在云服务上部署该应用程序。我使用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。那可能吗?如果是这种情况,我应该对文件进行哪些更改,以便云服务能够访问它们?

0 个答案:

没有答案