php - 为什么 $_SERVER ['PATH_TRANSLATED' ] 重复自己?

标签 php apache mod-rewrite apache2

当我注意到 $_SERVER['PATH_TRANSLATED'] 变量正在执行此操作时,我正在尝试创建 MVC 框架:

[PATH_INFO] => /test/test2/test3
[PATH_TRANSLATED] => redirect:/index.php/test/test2/test3/test2/test3

这是我通过 http://domain.tld/test/test2/test3 访问 PHP 文件的时候
注意它是如何在/test/之后重复的

这是我重写的.htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

有什么想法吗?我尝试更改 RewriteRule 规则,但没有任何改变。该变量对于我尝试做的事情并不那么重要,但我想知道为什么会发生这种情况,以及我是否配置错误。

服务器信息:
Apache /2.2.3
PHP 5.3.1

编辑:这个变量在 Lighttpd 下不会重复,因为它报告:

[PATH_INFO] => /test/test2/test3
[PATH_TRANSLATED] => /home/kramer/public_html/test/test2/test3

所以我假设它与 Apache 有关。我还在 Apache 下尝试了 FastCGI,它产生了相同的重复结果。

最佳答案

如果您使用 mod_rewrite , 然后阅读 PATH_TRANSLATED value 在您的脚本中没有用处,因为它将指向不存在的文件或路径。你应该使用 PATH_INFO在你的index.php了解用户请求的 URI。

举个例子,你可以看看CodeIgniter's路由器类。 CodeIgniter 可以使用多种方式获取 URI 参数:PATH_INFO , QUERY_STRING , REQUEST_URI , 和 ORIG_PATH_INFO .

如果您仍然对 Apache 的奇怪行为感到好奇,也许深入研究访问日志会发现一些线索。但是,如果您不使用此变量,请忽略它。它有不同的用途,您的 MVC 不会使用它。

关于php - 为什么 $_SERVER ['PATH_TRANSLATED' ] 重复自己?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2262291/

相关文章:

javascript - 仅使用 DomDocument 拉取 HREF

php - 正则表达式匹配必须包含字符串中的所有字符

php - Twitter oAuth 请求 token 无效

php - 一段时间后使php session 变量过期

java - Android 上的 HTTP 客户端

regex - 正则表达式 (.htaccess) 中 ^(.*)$ 和 ^ 之间的区别

php - JQuery中发现PHP返回AJAX错误

ruby - 如何将 sinatra 部署到 aws ec2 ubuntu 服务器?

Apache动态通配符主机用动态子域重写

apache - 使用 mod_rewrite (ajaxplorer) 无形地将根重写到子目录