【发布时间】:2020-04-14 20:50:49
【问题描述】:
我在 docker 中有一个 codeigniter 应用程序。
本地:本地主机/登录 OK
AWS ELB:www.mywebsite.com/Login KO
AWS ELB:www.mywebsite.com/index.php/Login OK
这是我的 Dockerfile
FROM php:7.1-apache
RUN apt-get update && apt-get install -y git-core cron \
libjpeg-dev libmcrypt-dev libpng-dev libpq-dev \
&& rm -rf /var/lib/apt/lists/* \
&& docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr \
&& docker-php-ext-install gd mcrypt mysqli opcache pdo pdo_mysql zip
RUN { \
echo 'opcache.memory_consumption=128'; \
echo 'opcache.interned_strings_buffer=8'; \
echo 'opcache.max_accelerated_files=4000'; \
echo 'opcache.revalidate_freq=2'; \
echo 'opcache.fast_shutdown=1'; \
echo 'opcache.enable_cli=1'; \
} > /usr/local/etc/php/conf.d/docker-ci-opcache.ini
RUN { \
echo 'log_errors=on'; \
echo 'display_errors=off'; \
echo 'upload_max_filesize=32M'; \
echo 'post_max_size=32M'; \
echo 'memory_limit=128M'; \
echo 'date.timezone="UTC"'; \
} > /usr/local/etc/php/conf.d/docker-ci-php.ini
RUN { \
echo '<FilesMatch "^\.">'; \
echo ' Order allow,deny'; \
echo ' Deny from all'; \
echo '</FilesMatch>'; \
echo '<DirectoryMatch "^\.|\/\.">'; \
echo ' Order allow,deny'; \
echo ' Deny from all'; \
echo '</DirectoryMatch>'; \
} > /etc/apache2/conf-available/docker-ci-php.conf
RUN a2enconf docker-ci-php
RUN a2enmod rewrite
COPY . /var/www/html
EXPOSE 80
这在本地运行良好,但是在 aws ELB 上部署此应用程序时需要在 url 上使用 index.php。
config.php
$config['base_url'] = 'http://'.$_SERVER['SERVER_NAME'].'/';
$config['index_page'] = '';
$config['uri_protocol'] = 'AUTO';
.htaccess
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
【问题讨论】:
标签: apache amazon-web-services docker amazon-elastic-beanstalk codeigniter-3