2013-01-02 20 views
5

İçinde boşluk bulunan bir URL ile eşleştirmek istediğimde, boşluklar %20 veya + olarak kodlanabilir. Bunu bir Nginx regex ile eşleştirmek için hangi deseni kullanmam gerekiyor?Eşleşmeden önce Nginx unquote/unescape URL karakterleri var mı?

Nginx URL'yi olduğu gibi iletir mi?

(?:%20|\+|)

ya, Nginx bazı unquoting ya da ilk atlanmaması, işe yarar?

(?:\+|)

veya + normalize edilir? Benim testlerinden, hızlı bir bakışla Nginx belgelerinde herhangi bir referans bulamadık olsa

cevap

1

, Nginx '% 20' a '\ s' ile eşleştirilir şekilde Unicode olarak HTTP kodlarını normale . '+' zaten unicode ve normalize olması gerekmez.

Ör. (?:(\s|\%20))

:

/route/the%20test Ancak (?:\s)

ile eşleşmesi halinde, ben daha güvenli tarafta yalın ve böyle bir şey kullanma eğiliminde