gpt4 book ai didi

apache - Docker和Apache-重定向301和斜杠

转载 作者:行者123 更新时间:2023-12-02 20:12:42 24 4
gpt4 key购买 nike

我希望我能在这里找到帮助,因为几天以来我很少迷路...

我正在尝试将PHP应用程序放在Docker容器中。

所以我正在使用这张图片:https://hub.docker.com/_/php/
(特别是 php:7-apache 标记)。这样,我将PHP和Apache放在同一个容器中。

所以我的问题是,当我访问URL时不带斜杠时,我在重定向时添加了斜杠,但使用了Docker主机上无法访问的容器IP地址。

例:

  • http:// localhost / admin->重定向问题
  • http:// localhost / admin /->效果很好

  • 如您在此屏幕快照中所见,容器的本地IP会自动重定向,但无法访问:我们在Web浏览器中存在超时。

    console screenshot

    在这种情况下,容器IP地址为 172.17.0.2
    (我的容器在主机上发布在端口 80上,因此我像标准docker方式那样通过localhost访问它)

    我的VirtualHost很简单:
    <VirtualHost *:*>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www/html


    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

    </VirtualHost>

    您对这个问题有想法吗?
    我想我记得 301重定向是Apache的正常行为,因为 mod_dir吗?但是为什么要使用容器本地IP?

    感谢您的帮助,对不起我的英语!

    最佳答案

    在您的虚拟主机中,您缺少以下内容

    ServerName localhost

    如果缺少该名称,Apache将尝试确定主机名本身,并改用IP。由于它在docker容器下运行,因此IP类似于 172.17.0.2,无法通过浏览器访问。

    这就是为什么需要添加 ServerName的原因,以便当apache必须发送重定向请求时,它可以创建该重定向的正确URL。

    关于apache - Docker和Apache-重定向301和斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45760617/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com