【问题标题】:Why is my document root being shown in PATH_INFO, PATH_TRANSLATED and PHP_SELF?为什么我的文档根目录显示在 PATH_INFO、PATH_TRANSLATED 和 PHP_SELF 中?
【发布时间】:2016-12-30 04:59:04
【问题描述】:

我设置了一个VirtualHost,如下所示:

<VirtualHost *:80>
       ServerName ownedmedia.vzweb07.example.co.uk
       DocumentRoot /var/www/vhosts/owned_media_microsite/httpdocs
       ErrorLog /var/www/vhosts/owned_media_microsite/logs/error_log
       CustomLog /var/www/vhosts/owned_media_microsite/logs/access_log combined
       SetEnv ENVIRONMENT 'development'
       <Directory /var/www/vhosts/owned_media_microsite/httpdocs>
               AllowOverride All
               allow from all
               Options +Indexes
       </Directory>
</VirtualHost>

我在 DocumentRoot 中有一个 .htaccess 文件,如下所示:

AddDefaultCharset UTF-8

DirectoryIndex index.php

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|robots\.txt|favicon\.ico)

RewriteRule ^(.*)$ index.php/$1 [L]

当我访问 http://ownedmedia.vzweb07.example.co.uk/admin/modules/load/coreg_api_module/rule/1var_dump $_SERVER 数组时,我看到了以下内容...(我已经删除了一些不相关的值)。

["DOCUMENT_ROOT"]=>
string(46) "/var/www/vhosts/owned_media_microsite/httpdocs"
["SCRIPT_FILENAME"]=>
string(56) "/var/www/vhosts/owned_media_microsite/httpdocs/index.php"
["REDIRECT_URL"]=>
string(43) "/admin/modules/load/coreg_api_module/rule/1"
["REQUEST_METHOD"]=>
string(3) "GET"
["QUERY_STRING"]=>
string(0) ""
["REQUEST_URI"]=>
string(43) "/admin/modules/load/coreg_api_module/rule/1"
["SCRIPT_NAME"]=>
string(10) "/index.php"
["PATH_INFO"]=>
string(52) "/httpdocs/admin/modules/load/coreg_api_module/rule/1"
["PATH_TRANSLATED"]=>
string(123) "redirect:/index.php/httpdocs/httpdocs/admin/modules/load/coreg_api_module/rule/1/admin/modules/load/coreg_api_module/rule/1"
["PHP_SELF"]=>
string(62) "/index.php/httpdocs/admin/modules/load/coreg_api_module/rule/1"

为什么PATH_INFO 等包含httpdocs 目录?

httpdocs 中甚至没有一个名为httpdocs 的目录,所以PATH_TRANSLATED 不可能是正确的。

有人知道为什么会这样吗?这个项目已经建立并且在其他主机上运行良好,我在这台机器上有其他虚拟主机没有遇到同样的问题。

【问题讨论】:

  • 我无法在我的 Apache 上重现此问题

标签: php apache .htaccess mod-rewrite virtualhost


【解决方案1】:

奇怪的是,我能够通过从文档根目录下删除所有内容然后重新上传来解决此问题。 可能是放错了 htaccess 文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-07
    • 2010-09-21
    • 2022-01-01
    • 2013-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-30
    相关资源
    最近更新 更多