Como eu adiciono uma regra de reescrita externa independente do servidor?

As regras de reescrita externa são incríveis. Eles permitem que você defina reescritas que não passam necessariamente pelo WordPress ‘ index.php . Isso significa que você pode mapear regras arbitrárias para arquivos arbitrários como:

 $wp_rewrite->add_external_rule( '^somethingrandom/?$', 'wp-content/wp-uploads/hiddendirectory/somefile.php' ); 

Então, qualquer solicitação para http://site.url/somethingrandom/ será realmente um arquivo PHP estático de um diretório diferente. Isso é incrível, e isso permite que você faça todo tipo de coisas astutas.

Mas ele só funciona com o Apache.

O método add_external_rule() escreve suas regras registradas para .htaccess . Como o Nginx não usa um arquivo .htaccess , as regras externas são completamente ignoradas por esse servidor. O que eu preciso é uma maneira independente do servidor de registrar regras programadas como a anterior. Alguma ideia?

Solutions Collecting From Web of "Como eu adiciono uma regra de reescrita externa independente do servidor?"

Isso também pressupõe que os arquivos .htaccess são habilitados no Apache, que quase sempre está em hospedagem compartilhada, mas geralmente é desabilitado em ambientes empresariais. Uma maneira de conseguir isso seria escrever sua própria function add_external_nginx_rule que redireciona para um arquivo (poderia usar .htaccess mesmo, embora isso possa ser confuso – deve ser um arquivo oculto começando com, independentemente do que) que você inclua no seu bloco de servidor Nginx como

 include /var/www/html/sitefolder/.htaccess; 

Na sua function, você redigirá redirecionamentos no formato Nginx, que é quase o mesmo que o formato Apache em muitos casos. Este é provavelmente algo que você poderia se transformar em um plugin mesmo. Ele requer configuração especial no seu arquivo de configuração Nginx, mas o uso de .htaccess no Apache requer que seja ativado no arquivo de configuração do Apache também, para que você possa argumentar que é o mesmo conceito.

Nota: Não tentei nada disso, mas não vejo nenhum motivo para que isso não funcione. Vale a pena explorar.

Atualização: Mark está certo nos comentários – isso não funcionaria porque o Nginx somente lê arquivos de configuração após a boot ou recarregamento inicial, então você precisaria reiniciar o Nginx com qualquer alteração, o que torna esta solução problemática do ponto de vista de segurança.