htaccess e sem www
-
24-09-2019 - |
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
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
dentroWordPress address (URL)
- Certifique -se de remover o
www
dentroBlog 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>