Kolay mod_rewrite - Yani tekrar düşünmek zorunda kalmayacaksınız

3 Cevap php

Not sure how you'll take this question but...

Ben URL'leri görünmesi için deneyin ne zaman pretty Ben her zaman çok uzun süre etrafında karışıklık sona ve sadece sorun değmez. Basit bir görev olsaydı ama sonuna etkisi iyidir.

Peki ne yapmak istediğinizi sonunda gibi bir şey başarmak istiyorum bir yöntem oluşturmak olduğunu ...

index.php?do=user&username=MyUsername //This becomes...
/user/MyUsername //...that
index.php?do=page&pagename=customPage //And this becomes...
/page/customPage //...that
index.php?do=lots&where=happens&this=here //This also becomes...
/lots/happens/here //...that
index.php?do=this&and=that&that=this&and=some&more=too //And yes...
/this/that/this/some/more //This becomes this

Öyleyse ben sadece tekrar bakmak zorunda kalmayacaksınız güzel. Htacess dosya olun. Biz oldukça URL'leri var ve benim kafa yapım incitmedi çünkü her şey dünyada daha iyi olacaktır.

3 Cevap

Tek bir parametre url atma farklı bir yaklaşım kullanmak, ve uygulama ayrıştırmak olabilir.

Yani apache yazma kuralı gibi görünecektir:

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

aşağıdaki gibi adresler dönüştürmek hangi:

/user/MyUsername => index.php?q=/user/MyUsername
/page/customPage => index.php?q=/page/customPage
...

App, o zaman '/' ile bölünmüş bir $ _GET ['q'] değişkeni var ve sırayla argümanlar var. PHP gibi birşey olurdu:

$args = explode('/', $_GET['q']);

$ Args vb 'kullanıcı' ile bir dizi, 'KullanıcıAdım' olacak

Bu şekilde tekrar. Htaccess dokunmak zorunda, sadece app mantık olmaz.

For /user/MyUsername ==> index.php?do=user&username=MyUsername and /page/customPage ==> index.php?do=page&pagename=customPage, you can use:

RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)$ index.php?do=$1&$1name=$2 [L]

Ama nasıl iki adresler çevirmek için mod_rewrite söylemek gerekir çünkü /lots/happens/here ve /this/that/this/some/more için bir catch-all kuralı yazabilirsiniz sanmıyorum.

Mod_rewrite /lots/happens/here index.php?do=lots&where=happens&this=here içine ve çevresinde değil başka bir yol çevirmek zorundadır, unutmayın.

En iyi yaklaşım, "oldukça URL'leri" gibi ayrıştırmak ve yorumlamak onları ve sadece bu gibi bir kural ile uygulama istekleri yeniden yazmak için mod_rewrite kullanmak için oluşturmak için uygulamaya temsilci olacaktır:

RewriteRule %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

Bu kural index.php için varolan bir dosyaya doğrudan eşlenemez tüm istekleri yeniden. Başlangıçta İstenen URL (daha doğrusu: URL yolu artı sorgu) $_SERVER['REQUEST_URI'] daha sonra da kullanılabilir.