2016-08-24 67 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服務器以嘗試使其工作。將更新 –