Desde que eu mesmo respondi a pergunta e depois que foi excluída da minha pergunta, eu a inserirei como uma "resposta própria".
Adicionando o problema abaixo resolvido:
RewriteCond %{THE_REQUEST} \?[^\ ]+
RewriteRule (.*) /$1? [R=301,L]
Eu tenho um site Wordpress baseado em servidor Apache que reescreve URLs para ser "bonito".
Quando incluo um parâmetro de consulta na url, o site quebra.
Então:
http://mysite.com
funciona bem, mas:
http://mysite.com/?anything
Não carrega o conteúdo da página, mas não carrega alguns plugins que eu uso na home page.
Se você puder explicar por que isso acontece, eu adoraria ouvir isso. Caso contrário, gostaria apenas de remover completamente os parâmetros de consulta para que uma solicitação:
http://mysite.com/?anything
se comportaria como a solicitação para:
http://mysite.com
Por meio de redirecionamento ou simplesmente removendo a string de consulta.
Aqui está o meu .htaccess atual:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# Handle redirection from https to http
RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [L,R=301]
# End https to http redirection
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{QUERY_STRING} ^index.php$
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Olá @Lothar_Grimpsenbacher,
Então eu acho que pode não ser um problema de .htaccess, pode ser um conceito de falta de WordPress. Vou tentar explicar brevemente;
WordPress tem alguns query_vars que vem das variáveis, e se você tem os permalinks "pretty" ativados (parece que você faz das regras do seu .htaccess), o problema seria que o ?anything
é um parâmetro GET não esperado, então o WordPress pode pensar que é um caso para um 404 dependendo de quais são as variáveis.
Tanto quanto eu posso dizer que eu não iria mexer com os arquivos .htaccess apenas para resolver este problema simples, pode lhe dar sérios problemas mais tarde.
Acho que a solução para o seu problema está em torno do WordPress ser capaz de ver que a variável passada é válida, verifique a solução abaixo:
function prefix_add_query_vars() {
global $wp;
$wp->add_query_var('anything');
}
add_filter('init', 'prefix_add_query_vars');
E na página do seu modelo, você pode verificar o valor assim:
if ( get_query_var('anything') ) {
//do your stuff
}
PS: Eu não sou bom com regras de arquivo .htaccess meu eu ...
RewriteCond %{THE_REQUEST} \?[^\ ]+
RewriteRule (.*) /$1? [R=301,L]
(por autor)