Neden $ _SERVER tekerrür ['PATH_TRANSLATED'] nedir?

1 Cevap php

I ['PATH_TRANSLATED'] $ _SERVER değişkeni bu yaptığını fark edince ben bir MVC çerçeve oluşturmak çalışıyorum:

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

This is when I'm accessing the PHP file by http://domain.tld/test/test2/test3
Notice how it is repeating after /test/

. Bu yeniden benim htaccess olduğunu:

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

Herhangi bir fikir? Etrafa RewriteRule kuralını değiştirmeyi denedim ama hiçbir şey değişmedi. Değişken Ben yanlış bir şey varsa ben ancak yapmak ne çalışıyorum, ben bu neden oluyor merak ediyorum ve o kadar önemli değil.

Server Info:
Apache/2.2.3
PHP 5.3.1

Bu raporları gibi Edit: Bu değişken, Lighttpd altında tekerrür etmez:

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

Bu yüzden Apache ile ilgisi var varsayarak yaşıyorum. Ben de Apache altında FastCGI denedim ve aynı yinelenen sonucu üretti.

1 Cevap

Eğer mod_rewrite kullanıyorsanız, o zaman olmayan bir varlığı dosyaya veya yolu işaret beri PATH_TRANSLATED değer, komut hiçbir faydası olacaktır okuma. Siz kullanıcı tarafından talep edildi URI bilmek için index.php in PATH_INFO kullanmalısınız.

Bir Örneğin, CodeIgniter's Router sınıfının bir göz atabilirsiniz. CodeIgniter URI parametreleri almak için çeşitli yollar kullanabilirsiniz: PATH_INFO, QUERY_STRING, REQUEST_URI, ve ORIG_PATH_INFO.

Eğer Apache garip davranış hala merak ediyorsanız belki erişim günlüğüne kazma suçlu bazı ipucu ortaya çıkaracaktır. Bu değişkeni kullanarak değilseniz Ancak, unut gitsin. Bu farklı bir amaca hizmet eder, ve MVC kullanmak için olacak değil.