2009-03-10 26 views

cevap

4
RewriteRule ^/cat_ap~nid~(.*)\.htm$ /cat_ap?nid=$1 [R] 

[R] işaret edebilir isteğe bağlıdır. Eğer atlarsanız, Apache kullanıcılarınızı yönlendirmeyecektir (yine de doğru sayfaya hizmet edecektir). nid kısım değişken de ise

, bu deneyebilirsiniz:

RewriteRule ^/cat_ap~([^~]+)~(.*)\.htm$ /cat_ap?$1=$2 [R] 

EDIT: Boş Ben'in yorumunda söyledi olarak, geçerli URL kümesini kısıtlamak isteyebilir. Örneğin, emin bir nid var yapmak isteyebilirsiniz ve bu sayısal söz konusudur: nid kısmı sadece alfabetik karakterlerden oluştuğundan değişken, eğer

RewriteRule ^/cat_ap~nid~([0-9]+)\.htm$ /cat_ap?nid=$1 

veya

:

RewriteRule ^/cat_ap~([A-Za-z]+)~([0-9]+)\.htm$ /cat_ap?$1=$2 
+0

Hangi karakterlerin eşleştiğini kısıtlamak isteyebilirsiniz (kristina'nın cevabı hakkındaki yorumlara bakın). Örneğin, kimliğiniz her zaman sayısalsa, (. *) Yerine ([0-9] +) kullanmayı deneyin. –

+0

Evet, kristina'nın cevabı üzerine yorum yaptım. =) Cevabımı düzenlemeyi düşündüm, ama soru böyle bir gereklilik göstermiyor. Her iki durumda da, cevabımı referans amacıyla düzenleyeceğim. –

1

varsayarsak burada değişken kısımlar "nid" ve 5964, sen yapabilirsiniz:

RewriteRule ^/cat_ap~(.+)~(.+).htm$ ^/cat_ap?$1=$2 

ilk "(. +)" maçları "NID" ve ikinci maçları "5964".

+0

Bunun işe yaramayacağından emin değilim, aynı zamanda /cat_ap~nid~foo~5964.htm ile eşleşmez mi? –

+0

Katılıyorum. Noktalar muhtemelen negatif karakter sınıfları olmalıdır (ör. [^ ~]). –

+0

Her ikisi de haklısınız, olumsuz karakter sınıfları daha iyi olurdu. – kristina

0

sen keyfi herşeyi isterseniz: \w[A-Za-z0-9_] eşittir

RewriteRule ^/(\w+)~(\w+)~(\w+)\.htm$ $1?$2=$3 [L] 

. Ve eğer bu kuralı bir .htaccess dosyasında kullanmak istiyorsanız, öndeki / şablondan kaldırın.

İlgili konular