mod_rewrite, php ve. htaccess dosyası

2 Cevap php

Ben nasıl çalıştıklarını daha iyi anlamak ve PHP ile ilgili bazı yeni şeyler öğrenmek için küçük bir CMS kodlama ediyorum. Ben ancak bir sorun rastlamak var.

Ben güzel temiz URL'leri üretmek için (birisi daha iyi bir çözüm varsa bunu çalıştığınız kadar değilim gerçi), yani = 2 site.com / index.php? Page yerine site.com / araçları olabilir mod_rewrite kullanmak istiyorum

Benim anlayışıma göre benim. Htaccess dosyası yeni bir sayfa eklemek her zaman değiştirmek gerekiyor ve ben bir sorun grev bu nerede, benim PHP izinleri değil, çünkü ben güncelleştirmek olamaz bana söyleyip duruyor. Chmod hızlı bir bit bile 777 izinleri ile bunu yapamam ortaya koymaktadır, ben bir şey eksik?

Mod_rewrite talimatlar için benim kaynak this page here önemlidir / yararlıdır örtmek şu anda.

2 Cevap

Bir yaklaşım, bir taşıma komut için her şeyi yeniden yazmak için

RewriteEngine on
RewriteBase /

# only rewrite if the requested file doesn't exist
RewriteCond %{REQUEST_FILENAME} !-s 

# pass the rest of the request into index.php to handle     
RewriteRule ^(.*)$ /index.php/$1 [L]

böylece bir isteği varsa http://yourserver/foo/bar/

aslında ne elde etmek http://yourserver/index.php/foo/bar bir istek olduğunu - ve (['PATH_INFO'] $ _SERVER kullanan / foo / bar ile ne karar index.php bırakabilirsiniz - tom )

Yalnızca. Htaccess ilk defa değiştirmeniz gerekir. Inexistent dosyalar için tüm gelecekteki istekleri sonra PHP ele alınabilir.

Ayrıca the docs for mod_rewrite yararlı olabilir - ama basit tutmak ya da belirsiz hataları aşağı izleme uyku ve saç çok kaybetmek hazırlamak.

Sizin PHP çok bariz nedenleri .htaccess değiştirmek mümkün olmamalıdır için. Eğer iş o olsun bile, ben bu akıllıca olup olmadığından emin değilim.

Nasıl mod_rewrite kuralları açısından daha soyut bir kurulum kullanmaya ne dersiniz? Bunu kullanmak istiyorum gibi, genel URL modelini tanımlayın. Örneğin:

/object/action/id

Sonra sırayla hangi sayfa (ilgili PHP kod dahil, diyelim ki) çalıştırmak için karar veren bir PHP sayfası, HTTP isteklerini yönlendirmek kurallar bir dizi yazmak.

RewriteRule ^/(\w+)/?(\w+)?/?(\d+)?$ /index.php?object=$1&action=$2&id=$3 [nocase]

Bu şekilde çok sık bir hala esnek olmak .htaccess güncellemek için olmazdı.