2010-02-14 72 views
4

我試圖創建一個MVC框架時,我注意到了$ _ SERVER [ 'PATH_TRANSLATED']變量是這樣做的:

[PATH_INFO] => /測試/測試2/TEST3
[PATH_TRANSLATED] =>重定向:/index.php/test/test2/test3/test2/test3

這是當我被http://domain.tld/test/test2/test3
通知訪問PHP文件它是如何後重復/測試/

這是我重寫的.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,它產生了相同的重複結果。

回答

3

如果您使用的是mod_rewrite,那麼讀取PATH_TRANSLATED的值將在您的腳本中無用,因爲它將指向一個不存在的文件或路徑。您應該在index.php中使用PATH_INFO來了解用戶請求的URI。

例如,您可以查看CodeIgniter's路由器類。 CodeIgniter可以使用幾種方法來獲取URI參數:PATH_INFO,QUERY_STRING,REQUEST_URIORIG_PATH_INFO

如果你仍然對Apache的奇怪行爲感到好奇,可能挖掘訪問日誌會揭示罪魁禍首的一些線索。但是,如果你不使用這個變量,就忘記它。它服務於不同的目的,並且您的MVC將不會使用它。

+0

是的我沒有計劃使用變量開始。只是好奇爲什麼它是這樣設置的。不過謝謝。 – KramerC 2010-02-15 05:53:10