Я занимаюсь университетским проектом, и мне нужно развернуть приложение в облачной службе. Я использую 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: Где я могу поместить файлы изображений, css, js и т. Д. В 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>
Мой app-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. Это возможно? И если это так, какие изменения я должен внести в файл, чтобы облачный сервис мог получить к ним доступ?