mod_rewrite sonrası için% 26 ile ampersand tüm örneklerini değiştirmek

4 Cevap php

Ben bir dosya talep edildiğinde benim sisteme daha aşağı ve işaretleri geçmek böylece sadece benim URL işareti kullanmak istemiyorsanız. Sorun Apache farklı onunla fırsatlar olduğunu. Bilmiyorum nasıl

Ben zaten index.php istenen dosyayı yeniden? Url = $ 1 bu yüzden ne olduğunu görebilir, ama orada bir işareti varsa, bunun geçmiş devam edemez!

nasıl işareti kaçmak veya en hex eşit (% 26) içine açabilirsiniz?

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

4 Cevap

1 emin yapıyolar url & kaçmış olun bu sunucu aldığında% 26 sembol yüzden bir ve işareti değil. Bu ve bunu geri çevirmek olmaz yani sonra yeniden yazma kuralı B etiketi ekleyin:

RewriteRule ^ (. *) $ Index.php? Url = $ 1 [B, QSA, L]

Bu B etiket farklı kuralları yeniden çalışırken 2 gün sonra kıçımı kurtardı.

Eklemek

RewriteRule ^(.*)\&(.*)$ $1\%26$2

Lütfen yeniden yazma kuralları için.

Senin yukarıdaki bu kuralı koyarak deneyin:

RewriteRule ^([^&]*)&(.*) $1\%26$2 [N]

Buna ek olarak size RewriteRule sonuna kadar [NE] bayrak ekleyebilirsiniz URL işareti ile geri tarayıcıya bir yönlendirme göndermek istiyorsanız.

RewriteRule ^/(.*) /index.php?p=yourpage_\%26_something_else [NC,NE,R=301,L]