2016-08-24 61 views
1

我有一个PHP函数,检测$_SERVER["PATH_INFO"],然后爆炸index.php后所有的参数。所有的网址都使用.htaccess进行重写。

下面是引用代码:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ index.php/$1 [L,QSA] 

问题是我的重写我的PHP函数做工精细本地,但我的测试环境中的服务器上,该功能不会没有我的网址为index.php返回$_SERVER["PATH_INFO"]

例如:

如果我去example.com/index.php/this/is/a/test,功能会给我一个这样的数组:{this, is, a, test}

,但如果我去example.com/this/is/a/test重写到index.php但我的功能给我什么。

我已经看到答案here,但我认为这更多的是服务器配置问题。该服务器目前在CentOS上运行,具有OVH RELEASE 3配置(类似于cPanel,ISP配置)。 web包是Apache2和php5。

欣赏这种方式的任何帮助。 ✌️

回答

2

PATH_INFO显示脚本名称后的部分。

当请求是​​时,没有脚本,因此也没有PATH_INFO

您可以使用REQUEST_URI(其中包括index.php在第一种情况下)或者添加明确的查询字符串(例如,

RewriteRule ^(.*)$ index.php?path=$1 [L,QSA] 

更新

事实证明,我错了。 我终于来到了周围的最小脚本

<?php 
echo "PATH_INFO=", $_SERVER['PATH_INFO']; 

测试这一点,它显示了PATH_INFO与任何index.php/test或只是/test。这是在一个标准安装的Ubuntu 16.04系统上。

因此,要了解实际情况,必须查看Apache的错误日志以获取更多详细信息。

+0

谢谢奥拉夫。 Wer'e重新配置apache服务器以尝试使其工作。将更新 –