Apache重写规则擦除全局$ _SERVER [' request-uri']

时间:2018-05-27 00:01:16

标签: php docker mod-rewrite

我目前正在维护在服务器中本地运行的旧应用程序。我创建了一个与此服务器具有相同规格的Dockerfile,但我收到了一个奇怪的错误。 这个遗留应用程序是使用旧程序员开发的自制框架构建的。他严重依赖全球$ _SERVER [' request_uri']的价值来进行路由。

在服务器中,值是请求的uri(即www.test.local),在docker版本中,我得到" /"作为回应。这是我的docker-compose

#-- v2 syntax
version: '2'

# Named volumes
volumes:
# MySQL Data
  hibrida-mysql-data:
  driver: local

  services:
   # MySQL (5.7)
   mysql:
    image: mysql:5.7
    container_name: hibrida-mysql
   volumes:
    - ./.db-data/:/var/lib/mysql
ports:
  - "3306:3306"
environment:
  - MYSQL_ROOT_PASSWORD=hibrida    
  - MYSQL_DATABASE=hibrida
  - MYSQL_USER=hibrida
  - MYSQL_PASSWORD=hibrida

# PHP (with Nginx)
app:
image: 1and1internet/ubuntu-16-apache-php-5.6
container_name: hibrida-apache
environment:
  XDEBUG_ENABLED: "true"
  XDEBUG_CONFIG: "remote_host=192.168.25.3"
  PHP_IDE_CONFIG: "serverName=dev.local"
volumes:
  - ./public:/var/www
  - ./config/vhost.conf:/etc/apache2/sites-available/vhost.conf
  - ./config/vhost.conf:/etc/apache2/sites-enabled/vhost.conf
  #- ./config/php.ini:/usr/local/etc/php/php.ini
  #- ./config/www.conf:/etc/php7/php-fpm.d/www.conf

ports:
  - "80:80"
links:
  - mysql

我刚刚登录到apache容器,我打开了ae2nmod重写。它可能是什么?

1 个答案:

答案 0 :(得分:0)

使用$_SERVER['REQUEST_URI']是查看来自客户端的原始未修改请求的最可靠方法之一,并且反映了HTTP请求的第一行,无论PHP脚本是如何被调用的。它不应包含主机名,并且在访问文档根目录时需要/。其他东西正在修改它。