Uma hipótese ...
RewriteRule .* index.php?request=$1 [L,QSA]
Esta linha parece como um erro, uma vez que a referência de% $1
estará sempre vazia, pois não há grupo capturado no padrão RewriteRule
.
O "framework" ainda pode funcionar (para o alfabeto latino) porque pode estar analisando o superglobal $_SERVER['REQUEST_URI']
PHP (como um fallback talvez) - o que muitos frameworks fazem. No entanto, $_SERVER['REQUEST_URI']
permanecerá codificado em URL (por exemplo, /actor/%C3%85ker
) - então, provavelmente, ele precisa ser decodificado por URL (por exemplo, /actor/Åker
) antes de poder ser roteado por meio de sua estrutura. Isso pode ser onde está o problema. Uma solicitação como /actor/Aker
, por outro lado, é a mesma, seja ela codificada ou não, portanto, isso não afetaria URLs como esse.
No entanto, se sua estrutura permitir que a URL solicitada seja substituída pelo parâmetro request
URL, considere alterar a diretiva acima para:
RewriteRule (.*) index.php?request=$1 [L,QSA]
ie. coloque o padrão RewriteRule
entre parênteses.
Isso fará com que o caminho da URL capturado seja passado no parâmetro request
URL. Agora, a diferença importante com isso é que o caminho de URL com o qual a diretiva RewriteRule
corresponde já está decodificado por URL. Portanto, o parâmetro request
URL já contém a solicitação decodificada por URL (embora menos o prefixo de barra), por exemplo. actor/Åker
.
UPDATE: Tente alterar o padrão RewriteRule
de .*
para [\s\S]*
. Por exemplo:
RewriteRule ([\s\S]*) index.php?request=$1 [QSA,L]
Este é apenas um padrão ligeiramente mais abrangente. Embora .
(ponto) corresponda a qualquer caractere (excluindo novas linhas), [\s\S]
corresponde a qualquer espaço em branco e a quaisquer caracteres que não sejam espaços em branco (ou seja, tudo ).