Pergunta

Estou tentando redirecionar todo o meu site para não-www

Aqui está o código htaccess que estou usando

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

# no www
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.akorra\.com$ [NC]
RewriteRule ^.*$ http://akorra.com%{REQUEST_URI} [R=301,L]

alguma ideia

Foi útil?

Solução

Eu acho que suas regras precisam entre as tags do módulo.

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

# no www
RewriteCond %{HTTP_HOST} ^www\.akorra\.com$ [NC]
RewriteRule ^.*$ http://akorra.com%{REQUEST_URI} [R=301,L]

# BEGIN WordPress
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress

</IfModule>

Outras dicas

Aqui está o que você precisa adicionar ao seu .htaccess

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]

No entanto, se você estiver trabalhando com o WordPress como o mecanismo que alimenta todo o seu site, basta atualizar a estrutura do Permalink e todas as configurações internas com seu nome de domínio para remover o www.

EDITAR:

Eu pensei que isso era diferente quando escrevi a resposta, desculpe. Tente mover sua regra não www para o topo ...

# no www
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.akorra\.com$ [NC]
RewriteRule ^.*$ http://akorra.com%{REQUEST_URI} [R=301s,L]

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Mais uma vez, lembre -se se o WordPress estiver configurado para produzir links com um www Então, nada o impedirá de reverter tudo de volta a ter um www, mesmo com uma regra de reescrita correta.

Mais detalhes do WordPress:

Verifique as configurações em wp/wp-admin/options-general.php ...

  • Certifique -se de remover o www dentro WordPress address (URL)
  • Certifique -se de remover o www dentro Blog address (URL)

E então atualize sua estrutura de link pré -calçada em wp-admin/options-permalink.php Portanto, as mudanças são refletidas.

Depois de tudo o que é dito e feito, verifique se o WordPress não substituiu o novo código em seu .htaccess Arquivo.

Olá, acho que você precisa ajustar seu script da seguinte maneira para a reescrita funcionar:

Options +FollowSymlinks
RewriteEngine on

Acredito que os signos de seguir absolutamente devem ser incluídos para que a reescrita de URL funcione corretamente.

Mais conselhos sobre Mod_rewrite aqui:

http://www.askapache.com/htaccess/mod_rewrite-tips-and-tricks.html

Roubar

RewriteEngine On
RewriteBase /

# no www
RewriteCond %{HTTP_HOST} ^([^.]+)\.akorra\.com$ [NC]
RewriteRule ^(.*)$ http://akorra.com/$1 [R=301,L]

# WordPres
RewriteCond %{REQUEST_URI} ^/[^\.]+[^/]$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

Isso deve funcionar

Sugiro usar este código para remover www do seu site:

RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]

É mais genérico.

E no seu exemplo, é melhor usar isso:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    # no www
    RewriteCond %{HTTPS} !=on
    RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
    RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]

    # BEGIN WordPress
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    # END WordPress
</IfModule>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top