php - Apache 重写规则擦除全局 $_SERVER['request-uri']
问题描述
我目前正在维护一个在服务器本地运行的遗留应用程序。我用这个服务器创建了一个具有相同规格的 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 rewrite。会是什么呢?
解决方案
Using$_SERVER['REQUEST_URI']
是查看来自客户端的原始、未修改请求的最可靠方法之一,它反映了 HTTP 请求的第一行,无论 PHP 脚本是如何被调用的。它不应包含主机名,并且/
在访问文档根目录时会出现。其他东西正在修改它。
推荐阅读
- vbscript - 经典 ASP 应用程序的 iis 日志中记录了 500 错误
- python - 在地理坐标处查找平均值
- nginx - NGINX 多个 SSL 证书,具有一个 ip、不同的根和域
- spring - ThreadPoolExecutor 和 Spring Async
- java - 如何在属性文件中定义对象数组并从 Java 程序中读取
- kubernetes - Pod 安全上下文和 NFS 挂载
- azure-devops - Azure DevOps 通过 Rest Api 访问控制列表设置权限
- php - How to sort values of array in Laravel
- couchdb - couchdb GET _replicator 数据库返回 500
- microsoft-graph-api - Microsoft Graph API,密码授予选项