2008-12-02 18 views
16

Webroot dışında, ayrı bir yönetici sisteminden yüklenen görüntüleri saklamak için kullanılan bir dizinim var. Görüntüler bu biçimde saklanır:Apache mod_rewrite ve diğer adlar aynı anda nasıl kullanılır?

filepath/writable/images/00/00/23/65/filename-236581.jpg 

(Webroot'un olduğu filepath/html)

... örneğin. Burada, 236 veritabanındaki görüntünün kimliğidir ve dosya sistemi, bir dizinde 100'den fazla inode'u durdurmak için numaralı dizinlere ayrılmıştır.

böyle, ön uç web sunucusu bu erişebilmesini istiyoruz:

dosya bir seo optimize edilmiş dize, gerçek dosya adını aynıdır
http://(server)/filename-236581.jpg 

.

URL'yi yeniden yazacak şekilde yeniden yazabilmek için fazladan yeniden numaralandırılmış dizinler içerebiliyor ve isteği yazılabilir yazı/resim dizinine yönlendirebiliyorum, ancak aynı anda ikisini de yapamıyorum. . Hem takma adlar hem de mod_rewrite yönergelerini koyarsam, takma ad olanı yoksayar ve hata günlüğü, dosya yolunu/html/karşıya yüklenen görüntüleri bulamadığını bildirir.

RewriteRule ^(.*)\/([^\/]*)-([0-9])\.(gif|jpg|jpeg|png)$ /uploaded-images/00/00/00/00/$2-$3.$4 [L,NC] 

... vesaire, tüm yol kadar:

RewriteRule ^(.*)\/([^\/]*)-([0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9])\.(gif|jpg|jpeg|png)$ /uploaded-images/$3$4/$5$6/$7$8/$9$10/$2-$3$4$5$6$7$8$9$10$11$12.$13 [L,NC] 

alias /uploaded-images "filepath/writable/images" 

hiç fark etmez [L] Çıkarma İşte

Ben bugüne kadar ne olduğunu. [L] Eğer RewriteRule anlamına sonra bu

cevap

18

[L], son anlamına gelir.

Gerçekten kullanmanız gereken şey, [PT] işaretinin, yeniden yazım kuralınızdan çıkan yolun, durumunuzdaki diğer yönerge için sonraki işleyiciye aktarılması gerektiğini belirtmesidir.

[PT] etiketi [L] etiketini de içerdiğinden, artık [L] aswell'e ihtiyacınız yoktur.

1

"Son"

dürüst olmak gerekirse, ben bu sadece geliyordu ileri RewriteRule satırlar yok olacağını inanıyordu, ama incelemeye değer olabilir.