\w
単語文字が[a-zA-Z0-9_]
である場合にのみ単語文字に一致します また、すべてのUnicode文字が含まれているわけではありません。
ルールを次のように変更します:
RewriteRule ^post/([^/]+)/?$ single_post.php?blog_title=$1 [L,QSA]
[^/]+
/
以外のすべての文字に一致します Unicode文字も含みます。
phpコードを少し調整することもできます:
function url_slug($str) {
$str = mb_strtolower(trim($str), 'UTF-8');
$str = preg_replace('/[^\pL\pN]+/u', ' ', $str);
$str = trim($str);
$str = preg_replace('/\h+/', '-', $str);
return $str;
}