Gosto muito da Kinghost, mas tem um tempo que eles migraram meu servidor de Apache (meu querido apache) para o Nginx. Já dá pra imaginar o transtorno certo? Como eles alegaram que o site estava consumido muito recurso do servidor, fazer o que né?
As regras são implementadas via painel próprio, muito bom, mas que não permite total liberdade como apache. Consegui converter a maioria das regras, pelo painel deles mesmo e o site antigo, ficou funcionado pelas metades. Inclusive peço desculpas a todos, pois estava trabalhando na nova versão e acabei deixando a antiga sem funcionar muito bem.
Inicialmente os maiores problemas que tive foi com as regras dentro de subdomínios. Aqui uso subdomínios para dividir o carregamento de arquivos e imagens( subs: st, img, i1, i2, i3).
Para acabar de completar a confusão, passo os parâmetro da imagem via rewrite, para gerar miniaturas, etc. Infelizmente o suporte ajudou pouco e tive que procurar soluções alternativas.
1ª dica - pastas
Para aplicar as regras nas pastas, você precisa escolher o diretório de origem, exemplo: /comunidade/
E neste caso você pode usar uma regrar do apache que ele converte, porém especificando a pasta, já que no apache, o .htaccess fica dentro da pasta.
Antes:
RewriteRule ^page/([0-9]+)/?$ /comunidade/index.php?page=$1 [L,QSA]
Depois:
RewriteRule ^/comunidade/page/([0-9]+)/?$ /comunidade/index.php?page=$1 [L,QSA]
Assim você pode jogar numa área de texto no painel que ele irá converter e funcionar. Este exemplo é do fórum bbpress.
2ª dica - extensão
Este foi o meu maior problema, pois a kinghost não aceita de forma alguma você passar extensões via parâmetros, aqui tive problema com .js, .jpg, .png, .gif, etc.
Exemplo: JS
Você quer pegar um arquivo javascript.php e passar ele para javascript.js para ficar "padronizado".
RewriteRule ^javascript.js$ js/javascript.php
Pelo servidor Nginx, a kinghost não aceita, tentei de tudo, mandei e-mail para suporte e nada.
Resolvi usar .jshtml, extensões personalizadas funciona normalmente.
RewriteRule ^javascript.jshtml$ js/javascript.php
As imagens a mesma coisa, tive que usar : ao invés de . nas imagens
Como trabalho com apache em localhost, ou se precisar usar o apache novamente, para ficar fácil definir uma constante SRV
define('SRV', 'nginx');
Assim quando busco o path real das imagens, preciso substituir . por :
if(SRV == 'nginx'){ $re['path'] = str_replace('.', ':', $re['path']); }
E no arquivo que gera as imagens preciso fazer o inverso : por .
if(SRV == 'nginx'){ $img['arquivo'] = str_replace(':', '.', $img['arquivo']); }
Onde
$img['arquivo']
Seria o parâmetro passado via rewrite. Se você quiser usar extensão original basta alterar o SRV
define('SRV', 'apache');
Entretanto se você quiser usar os : no apache irá funcionar da mesma forma.