Parece que isso está em um contexto diretório . Nesse caso, o $1
backreference não contém um prefixo de barra (porque o caminho de URL com o qual o padrão RewriteRule
<> corresponde não contém um prefixo de barra), portanto, ele é visto como < em> caminho relativo substituição. mod_rewrite adiciona de volta o prefixo de diretório (por exemplo, /home/usrn32/domains/myserver.com/public_html/
) à substituição quando é relativo .
Você precisa incluir explicitamente o prefixo de barra na susbtitution (ou usar uma diretiva RewriteBase
), para que não seja mais relativo . Por exemplo:
RewriteRule (.*) /$1? [R=permanent,L]
Além disso, você provavelmente deseja incluir o L
flag, para evitar novas reescritas (se tiver alguma).
Also, I want to catch all arg numbers, not just 0.
Modifique seu CondPattern ( ^arg=0$
) para algo como ^arg=\d+$
(1 ou mais dígitos).
Em resumo:
RewriteCond %{QUERY_STRING} ^arg=\d+$
RewriteRule (.*) /$1? [R=permanent,L]
remove all queries
Se você literalmente quisesse remover todos os parâmetros da string de consulta, você poderia alterar o CondPattern para apenas um ponto (por exemplo, .
) para corresponder a qualquer caractere .