Dockercomposeを使用しています。ただし、「docker-compose up」を実行すると、次のエラーが発生しました:/var/www/html/.htaccess:無効なコマンド「RewriteEngine」。
どこで失敗したのか教えてもらえますか?
プロジェクトアーキテクチャ:
project-name /
/ docker-compose.yml
/ Dockerfile
/ Apache.conf
/ php.ini
/ src /
/ index.php
/ .htaccess
docker-compose.yml:
web:
build: .
ports:
- "80:80"
volumes:
- ./src:/var/www/html
- php.ini:/usr/local/etc/php/conf.d/30-custom.ini
- Apache.conf:/etc/Apache2/sites-enabled
environment:
- ALLOW_OVERRIDE=true
Dockerfile:
FROM php:7.0-Apache
RUN a2enmod rewrite
RUN service Apache2 restart
ADD ./src /var/www/html
php.ini:
display_errors=1
error_reporting=E_ALL
Apache.conf(私のIPアドレスを使用):
<VirtualHost *:80>
ServerName xxx.xxx.xx.xxx
DocumentRoot /var/www/html
</VirtualHost>
コマンドラインに入力します:
docker@default:/blabla/project-name$ docker-compose up
それは私を返します:
AH00558: Apache2: Could not reliably determine the server's fully
qualified domain name, using xxx.xx.x.x. Set the 'ServerName' directive
globally to suppress this message
そして
/var/www/html/.htaccess: Invalid command 'RewriteEngine',
perhaps misspelled or defined by a module not included in the server
configuration
そしてブラウザで、私のIPアドレスで( http://xxx.xxx.xx.xxx/ ):
500 Internal servor error
私の.htaccess:
<files .htaccess>
Require all denied
</files>
Options +FollowSymlinks -Indexes -Multiviews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?p=$1 [L,QSA]
私はWindowsを使用しており、Oracle VM VirtualBoxを使用しています。
前もって感謝します !
編集:私が書き換えルールを削除すると、すべてが機能すると言うべきです。
これは私のために働きます:
# Dockerfile
FROM php:5.6-Apache
MAINTAINER Raphael Mäder <[email protected]>
RUN a2enmod rewrite
ADD . /var/www/html
以前にイメージをビルドしたことがある場合は、docker-compose up
コマンドを--build
で実行することを忘れないでください。そうしないと、RUN a2enmod rewrite
ステートメントが含まれていない可能性のある古いイメージが実行されます。
これをDockerfileに追加します。
# Enable mod_rewrite for images with Apache
RUN if command -v a2enmod >/dev/null 2>&1; then \
a2enmod rewrite headers \
;fi