htaccess karakter kodlama sorunu

2 Cevap php

I have page which is redirected from htaccess. now I can pass the German characters as params

gibi

site.com/maörx/idasd

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^([a-zA-Z0-9äÄöÖüÜéß\-]*)/?$ page.php?var=$1 [L]

it is working in the localhost . but not on the server.... server i am getting the same old issue(Error 404:Object not found!)

Yukarıdaki kod sunucusu için doğru olduğunu?

2 Cevap

Lütfen kural çalışır eğer hem karakter kodlamaları (. Htaccess dosyasında kullanılan bir ve istenen URI için kullanılan bir) bağlıdır. Ikisi de aynı ise, bu çalışması gerekir.

HTTP üzerinden bir istek için URL kodlama yaparken çoğu kullanıcı arayüzlerinin günümüzde ISO 8859-1 veya UTF-8 kullanabilirsiniz. Ama UTF-8 er ya da geç ISO 8859-1 yerini alacak.

bobince açıklamalarda fark olarak yorumlanırken ve Apache dahili tek bayt kodlama ASCII kullanır. Htaccess dosyaları. UTF-8 gibi multy bayt kodlamayı kullanmak çok zaman sorunları alabilirsiniz. Ancak aşağıdaki kodlayan independed:

# for ISO 8859-1
RewriteRule ^([a-zA-Z0-9\xC4\xD6\xDC\xDF\xE4\xE9\xF6\xFC-]*)/?$ page.php?var=$1 [L]
# for UTF-8
RewriteRule ^(([a-zA-Z0-9-]|\xC3\x84|\xC3\x96|\xC3\x9C|\xC3\x9F|\xC3\xA4|\xC3\xA9|\xC3\xB6|\xC3\xBC)*)/?$ page.php?var=$1 [L]

Ama böyle bir yapı önlemek için, sadece çizgi ve nokta hariç ve PHP ile daha sonra değerini doğrulamak olabilir:

RewriteRule ^([^/.]*)/?$ page.php?var=$1 [L]

Tam these umlauts ilgili özel bir şey olmadıkça, sen gibi düzenli ifadede POSIX karakter sınıfları kullanmak gerekir [: alpha:], [: alphanum:], [: upper:] ve [: alt: ].

Örneğin, POSIX character classes düzenli ifadeler Wikipedia makalesinde, bkz.