Htaccess ve php kullanarak dinamik klasörler yaratın

3 Cevap php

Bir kullanıcı sitemde kaydeder her zaman ben onları kendi tescilli "username" ile kendi alt sağlamak istiyorum. Her kullanıcı alt şeyler yapacağız aynı "index.php" dosyası var olacaktır.

Örneğin: "/ users/username1 /" ve "/ users/username2 /"

If some one wants to access the subdirectory they would simple go to: "www.example.com/users/username1/" or "www.example.com/users/username2/"

Kolay ve dağınık bir çözüm sadece her kullanıcı için bir alt dizin oluşturun ve her dizinde aynı "index.php" dosyasını yerleştirmek olacaktır. Ama benim için bu sadece benim sunucu alanı kalabalık olacak ve benim dizinleri büyük yapmak edilir.

Bütün bu. Htaccess kullanılarak yapılabilir olmadığını bilmek istedi? Ben bir "index.php" ve bir tane oluşturmak ". Htaccess" dosyası ve benim "/ users /" dizinine ikisini de yerleştirebilir miyim? Ne benim. Htaccess dosyasında yer olurdu gerçek kod olurdu?

Bunu yapmanın daha iyi bir yolu varsa lütfen bana bildirin. Ben çalışma ortamı olarak Apache ve PHP kullanıyorum.

Teşekkür ederim

3 Cevap

Peki, örneğin, böyle bir htaccess ile hepsini yapabilirsiniz:

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

Ne yapar:

  • yeniden yazma motoru anahtarları
  • denetler istenen dosya varsa
  • istenen dizin varsa denetler
  • NOT eğer, o ana index.php için isteği yönlendirir

Temelde bu böyle yourdomain.com / kullanıcıları url girerseniz / ivan / sen istemek yönlendirileceksiniz gelir:

index.php?url=/users/ivan

o zaman index.php $ _GET ['url'] ve parçalara bölmek.

Bunu yapmak için sadece bir example, orada diğer mod_rewrite yöntemleri bulunuyor.

Sanal olun. Hiçbir alt dizinleri vardır, mod_rewrite o simüle etmek için kullanabilirsiniz.

Mod_rewrite ile örneğin / users.php? Kullanıcı = UserName1 için / users/username1 skoru yapabilirsiniz. Her müşteri için şeffaf, o alışkanlık gerçekten neler olup bittiğini fark.

Böyle bir şey ile:

RewriteEngine On
RewriteRule ^([\-_0-9A-Za-z]+)$  index.php?a=$1 [L]
You can customize RewriteRule as much as you want.

Sen aslında istediğiniz herhangi bir dizine yazabilir, ve index.php sayfasına yönlendirileceksiniz.

Eğer mevcut dizinleri yönlendirilir olmadığından emin olmak istiyorsanız, şunu yapın:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([\-_0-9A-Za-z]+)$  index.php?a=$1 [L]

: Bunu user/ (taşması Stack benzer) yönlendirilir sadece alt, sadece kural başlangıcına 'kullanıcı' eklemek, kapsamını sınırlamak isterseniz

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^user/([\-_0-9A-Za-z]+)$  index.php?a=$1 [L]

Ve son olarak, tüm kullanıcı istekleri gerçek index.php sayfasından ayırmak tek bir dosya tanıtıcı olmasını istiyorsanız:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^user/([\-_0-9A-Za-z]+)$  users.php?a=$1 [L]

Bu benim CSS dosyaları dağıtmak için kullanabileceğiniz bir çok benzer bir kurulum.

Not: Dizin yer olacak olan $_GET['a']