Apache2重写规则在image docker.io/library/php:7.4-apache的容器中不起作用
主要问题:Apache2重写规则在image docker.io/library/php:7.4-apache的容器中不起作用,php,apache,docker,mod-rewrite,containers,Php,Apache,Docker,Mod Rewrite,Containers,主要问题: http://localhost/mysite/source/aphpfile.php有效 http://localhost/mysite/aphpfile尽管有运行aphpfile.php的重写规则,但仍不起作用 我尝试将服务器放置在容器中,从php:7.2-apache和php:7.4-apache容器图像中运行docker.io/library/。我在这两方面都有同样的问题。当我在本地尝试时,重写规则非常有效。我希望它能在容器中工作 磁盘上的文件夹结构(容器内): /var/w
http://localhost/mysite/source/aphpfile.php
有效
http://localhost/mysite/aphpfile
尽管有运行aphpfile.php
的重写规则,但仍不起作用
我尝试将服务器放置在容器中,从php:7.2-apache
和php:7.4-apache
容器图像中运行docker.io/library/
。我在这两方面都有同样的问题。当我在本地尝试时,重写规则非常有效。我希望它能在容器中工作
磁盘上的文件夹结构(容器内):
/var/www/html/mysite/source/aphpfile.php
不包括.htaccess
文件
配置:
/etc/apache2/apache.conf
文件a2enmod重写
a2ensite mysite.conf
a2enmod信息
http://localhost/server-info
已确认加载正确的配置:
Current Configuration: (from server-info page)
In file: /etc/apache2/sites-enabled/mysite.conf
1: <Directory "var/www/html/mysite/">
7: RewriteEngine On
9: RewriteCond %{REQUEST_FILENAME} !-d
10: RewriteCond %{REQUEST_FILENAME} !-f
11: RewriteRule ^aphpfile /var/www/html/mysite/source/aphpfile.php [L]
: </Directory>
日志:
/var/log/apache2/access.log
:/var/log/apache2/error.log
:未显示与此特定事件相关的错误
请求podman
(非docker)podman exec-it bash
访问/修改容器edit2
不是问题的解决方案,但我将继续使用替代方案:
这样,所有功能以及重写规则都可以正常工作
已创建新图像:
#Dockerfile
FROM debian:buster-slim
RUN apt update -y \
&& apt install -y apache2 php php-<many extensions> \
&& apt clean all
#COPY <source> <dest>
#RUN <a2enmod, a2ensite>
CMD apachectl -D FOREGROUND
#Dockerfile
来自debian:buster slim
运行apt更新-y\
&&apt安装-y apache2 php-\
&&善始善终
#抄袭
#跑
CMD apachectl-D前景
仍然不知道为什么官方的
php:7.x-apache
图像不起作用。(Bug?“#可以肯定的是,我也尝试过使用^/aphpfile^/mysite/aphpfile^/mysite/aphpfile”你发现了什么<代码>^aphpfile与/mysite/aphpfile
不匹配。我想先看看服务器信息输出中不起作用的示例,然后再假设您做得正确。当我进行假设时,我错过了可以保持分析准确的有效数据点:PAnother point,RewriteRule
重写到一个URI位置,而不是底层文件系统上的路径。因此,如果您确实正确地编写了正则表达式,那么您可能会将url直接写入https://servername/var/www/html/mysite/source/aphpfile.php
然后将尝试从docroot读取,类似于/var/www/html/var/www/html/mysite/source/aphpfile.php`,这实际上是一个404。@Daniel Farrell,谢谢你的评论,编辑了原始帖子,加入了我曾经尝试过的内容。请在帖子中搜索edit1术语。因为mysite.conf
有,
,我正在搜索^aphpfile
,它在非容器服务器中正常工作。另外,如果写入
,则搜索^mysite/aphpfile
在非容器服务器中工作,目标是文件的绝对路径(从/var/…)开始)。当服务器是容器时,这些都不起作用。
127.0.0.1 - - [31/Oct/2020:14:01:36 +0000] "GET /mysite/aphpfile HTTP/1.1" 404 490 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36"
#Dockerfile
FROM debian:buster-slim
RUN apt update -y \
&& apt install -y apache2 php php-<many extensions> \
&& apt clean all
#COPY <source> <dest>
#RUN <a2enmod, a2ensite>
CMD apachectl -D FOREGROUND