Neden www.example.com / index.php / tr / Burada yol / index.php tarafından işlenir?

3 Cevap php

Ben apache özelliği bu gibi istekleri yönlendiriyor denir nasıl, sadece merak ediyorum

www.example.com/index.php/my/path/here

Bir dosya index.php için? İlk anda, bu isteği 404 hata sayfasına yönlendiriyor, hiçbir folder site kök dir de index.php adında var çünkü doğru olacağını düşünebilir.

BTW, (bir özellik ise) bu tür istekleri gerçekten 404 ile sonuna kadar, böylece bu Apache özelliği kapatmak için bir olasılık var mı?

3 Cevap

Bu bir URL yeniden yazma özelliği değildir. Ya da en azından need olmak değildir. Bkz AcceptPathInfo Directive:

This directive controls whether requests that contain trailing pathname information that follows an actual filename (or non-existent file in an existing directory) will be accepted or rejected. The trailing pathname information can be made available to scripts in the PATH_INFO environment variable.

For example, assume the location /test/ points to a directory that contains only the single file here.html. Then requests for /test/here.html/more and /test/nothere.html/more both collect /more as PATH_INFO.

Bu aslında bir CGI environment variable idi.

  • PATH_INFO

The extra path information, as given by the client. In other words, scripts can be accessed by their virtual pathname, followed by extra information at the end of this path. The extra information is sent as PATH_INFO. This information should be decoded by the server if it comes from a URL before it is passed to the CGI script.

Bir açıklama için this link bakın.

(Bu durumda) bilgi aktardığı index.php komut without bazı arama motorları tarafından göz ardı edileceği bir sorgu dizesi, makalenin bu nedenle adını "kullanarak bir yöntemdir Arama Motoru Dostu URL'ler ".

O ortada index.php ile garip görünümlü URL'LER önler çünkü makalede açıklanan üçüncü yöntemi tavsiye ederim.

Bu index.php sunucudan PATH_INFO kontrol ve içeriği bir bütün ağaç işlemek gibi bir dosya olabilir ki var. Bunu kapatmak için benim bildiğim bir yolu yok iken, sadece index.php boş olmayan bir $ _SERVER ['PATH_INFO'] için kontrol edin ve header () fonksiyonu aracılığıyla bir 404 kodu ile yanıt var olabilir.