2011-03-11 13 views
13

Mod_rewrite'de [NE] (noescape) bayrağına baktım. Bazı düşünce sonra ben bayrağı kullanmak istiyorum değil bir durum anlamaya couldn't. Anlamı, bayrağı hemen hemen her RewriteRule'da etkin tutmak en yararlı görünüyor. Bu bayrağı çağırmama, birkaç durumda sorunlara neden oldu. Ben başa kuralların çoğu mod_rewrite NE flag - URL'de özel karakterleri kodlamak ne zaman yardımcı olur?

yerine geçerek yerine, HTTP yönlendirmeleri ( [R]) bulunmaktadır. o mod_rewrite kodlamak URL olması yararlı olduğunda

birisi olarak biraz ışık tutmak istiyorsunuz?

o uygulama genellikle iyi bu bayrağı etkinleştirin veya mod_rewrite bu özel karakterleri kaçış izin varsayılan davranışını kullanmayı mı? Niye ya? diyelim ki - - yetkilendirme imzası sen bir parçası olarak istek url eklerken

+3

Büyük soru, sana Henüz bir cevap şaşırdım.Ayrıca, www üzerinde SO'nun www olmayan yönlendirme programlarına (ve tersi) düzinelerce yanıtın 'RewriteRule'de [NE]' yi eklemediğine daha da şaşırdım. Günümü kurtardınız, mod_rewrite yönlendirme sırasında neden URL'imin iki kez kodlandığını anlayamadım. +1 –

cevap

1

[NE] bayrak son derece yararlıdır.

Sadece yetkilendirme .htaccess kapalı birlikte çalıştığım bir hata vardı ama onu birlikte. Nedeni ortaya çıktı, yönlendirme, php $_GET parametresinde sonlanan öğeleri kodlayan URL oldu. Değiştim hata çözmek için:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*[^/0-9])$ $1/ [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*[^/0-9])$ $1/ [NE,R=301,L] 

için (yetki imza birçok şeyi oluşur, bunlardan biri olduğu istek URL)

+2

Downvoter, herhangi bir yorum var mı? –

+2

* "Birisi mod_rewrite URL'yi kodlamak için yararlı olduğu zaman bir miktar ışık tutamaz mıydı?" * – 5ervant

+0

@Servant -I nedenini yanıtlıyordu, "Bu bayrağı etkinleştirmek genellikle iyi bir uygulama mıdır, yoksa mod_rewrite'nin bu özel karakterlerden kaçmasına izin veren varsayılan davranış? Neden? " bir örnek - Temel olarak bu bayrağın kullanımıyla ilgili bir deneyim paylaşılıyor. –

3

Eğer source code for mod_rewrite bakarsak , noescape etkinse, proxy-nocanon bayrağını ayarladığını fark edeceksiniz.

mod_proxy_http URI standartlaştırmanız ve mod_proxy_http için dosya herhangi (muhtemelen qsappend'd) sorgu dizesi korumaz emin olun: proxy_http_canon (revision where that line was first added yılında

, aynı zamanda bu yorumunu dahil

: Eğer mod_proxy documentation okursanız)

o itibaren ardından, sen nocanon aşağıdaki söz göreceksiniz

Normal olarak, mod_proxy ProxyPassed URL'lerini standart hale getirecektir. Ancak bu, bazı arka uçlarla, özellikle de PATH_INFO'yu kullananlarla uyumsuz olabilir. İsteğe bağlı nocanon anahtar sözcüğü bunu bastırır ve "raw" URL yolunu arka uça geçirir. Proxy tarafından sağlanan URL tabanlı saldırılara karşı normal sınırlı korumayı kaldırdığından, arka ucunuzun güvenliğini etkileyebileceğini unutmayın. Ben

yanlış, ama bu mod_proxy içinde nocanon kullanımı (ve mod_rewrite uzantısı noescape tarafından) potansiyel güvenlik sonuçları olduğunu bana ima edilebilir. Bu, varsayılan olarak neden devre dışı bırakıldığını açıklar, hatta çoğu durumda etkin olmasını sağlamak daha yararlı gibi göründüğünü düşünür.

İlgili konular