URI'lar gibi / index.php / seo_path nasıl güvenilir

4 Cevap php

Bazen (mod_rewrite mevcut değildir, özellikle burada) bu yol düzeni kullanıldığını fark:

http://host/path/index.php/clean_url_here
--------------------------^

Bu seems, en azından index.php olarak adlandırılır ve bir $_SERVER['PATH_INFO'] ile /clean_url_here parçası sorgulayabilir Apache içinde, çalışmak. PHP bile kind of advertises bu özellik. Ayrıca, örneğin, CodeIgniter çerçeve kendi URL'ler için varsayılan olarak bu tekniği kullanır.

The question: tekniği ne kadar güvenilirdir? Durumlar, olduğu yerde Apache index.php diyoruz ama yolunu çözmeye çalışır değil mi? Ne lighttpd, nginx, IIS, aolserver hakkında?

A ServerFault question? Ben bir PHP kodu içinde, bu özelliği kullanarak yapmak daha var bence. Bu nedenle ben burada sormak.

Addendum: VolkerK tarafından önerildiği gibi, bu soruya makul bir uzantısıdır: Nasıl bir programcı etkisi $_SERVER['PATH_INFO'], çeşitli sunucu türleri varlığı?

4 Cevap

Ben bu stackoverflow ve serverfault için eşit derecede uygun bir soru düşünüyorum. Örneğin Bir geliştirici olarak ben sadece (neredeyse her şeyi içerebilir anlamına gelir) pathinfo herhangi bir kullanıcı girişi gibi güvenilir olduğunu söyleyebilirim ve komut dosyası veya web sunucusu sürümüne ve yapılandırmasına bağlı olarak almazsanız olabilir:

Apache: AcceptPathInfo
IIS: e.g. AllowPathInfoForScriptMappings and others
and so on and on...

But server admins possibly can tell you which settings you can expect "in the real world" and why those settings are preferred.
So the question becomes: How much influence do you (or the expected userbase) have on the server configuration.

Benim deneyim, normal web hosting ve sunucu ortamlarında kurulumları PATH_INFO is genellikle mevcut derdim - hatta IIS - ama nadir durumlarda, öyle değil. Mümkün olduğunca çok platformda dağıtılabilir olması gerekiyordu bir uygulama oluştururken, ben bir kodlanmış düzeyde PATH_INFO güven olmaz.

Ben bir sarıcı işlevi oluşturmak için deneyebilirsiniz zaman build_url() Bu, bir yapılandırma ayarına bağlı olarak, ya kullanır

  • ham URL www.example.com/index.php?clean_url=clean_url_here
  • PATH_INFO'yu mekanizması www.example.com/index.php/clean_url
  • mod_rewrite www.example.com/clean_url

ve uygulama yayar tüm URL'ler bu kullanın.

There might be naive scripts (auto-linking for example) that do not recognize this URL's format. Thereby decreasing the chance that links to your content will be created.
Since home-grown regular expression patterns are common for these tasks, the chance of failure is quite real.

Teknik olarak, bu URL'ler gayet iyi. SEO-bilge, onlar 'daha az mükemmel' vardır.