Eu gostaria de redirecionar www.example.com
para example.com
. O seguinte código htaccess faz isso acontecer:
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]
Mas, existe uma maneira de fazer isso de maneira genérica sem codificar o nome de domínio?
apache
mod-rewrite
url-rewriting
deepwell
fonte
fonte
Respostas:
O mesmo que o de Michael, exceto que este funciona: P
fonte
RewriteEngine On
precursor para fazê-lo funcionar.http://www.domain.com/
parahttp://domain.com//
. Você deve adicionar/
aoRewruteRule
. Isso funciona para mimRewriteRule ^/(.*)$ http://%1/$1 [R=301,L]
.http://domain.com//
com as barras duplas. Então eu fizRewriteRule ^(.*)$ http://%1$1 [R=301,L]
e ele parece estar funcionando até agoraMas se precisarmos fazer isso para http e https separados:
fonte
RewriteCond %{HTTPS} off RewriteCond %{HTTP_HOST} ^www.example.com/$ [NC] RewriteRule ^(.*)$ http://www.example.com [R=301,L]
.../
..htaccess
você não deve estar recebendo uma barra extra. (Só para observar, se você estiver executando esse redirecionamento na configuração do servidor, provavelmente não deve usar o mod_rewrite para começar ... um simples mod_aliasRedirect
no contêiner vhost apropriado seria mais eficiente e menos propenso a erros.)Redirecionar não www para www (ambos: http + https)
fonte
RewriteEngine On
eRewriteBase /
, mas funcionou bem.Se você quiser fazer isso no arquivo httpd.conf, poderá fazê-lo sem mod_rewrite (e, aparentemente, é melhor para o desempenho).
Eu recebi essa resposta aqui: /server/120488/redirect-url-within-apache-virtualhost/120507#120507
fonte
Aqui estão as regras para redirecionar um URL www para no-www:
Aqui estão as regras para redirecionar um URL sem www para www:
Observe que eu usei o
NE
sinalizador para impedir que o apache escape da string de consulta. Sem esse sinalizador, o apache alterará o URL solicitadohttp://www.example.com/?foo%20bar
parahttp://www.example.com/?foo%2250bar
fonte
o
RewriteCond
captura tudo naHTTP_HOST
variável após owww.
e salva%1
.A
RewriteRule
captura do URL sem os principais/
e o salva$1
.fonte
sans leading "/"
- Em.htaccess
(como declarado na pergunta), não há avanço/
, portanto o padrão nunca corresponde e o redirecionamento nunca acontece. (Existe apenas uma barra invertida em um contexto de servidor ou host virtual .) Além disso, se você tiver alguma diretiva mod_rewrite após isso, precisará doL
sinalizador.Tente o seguinte:
Se o host começar com www, colocamos o host inteiro no início da URL e retire o "www".
fonte
.htaccess
. Em um contexto de diretório (.htaccess
), você deve alterar o primeiroRewriteRule
para ler:RewriteRule ^(.*)$ %{HTTP_HOST}/$1 [C,DPI]
(requer Apache 2.2.12+). Observe a adição da barra e oDPI
sinalizador (Descartar informações do caminho) - para impedir que parte do caminho do URL seja aparentemente duplicada (que é de fato "informações do caminho"), conforme declarado nos comentários anteriores. No entanto, existem diretivas mais simples - conforme abordado nas outras respostas.Manipulador WWW genérico completo, http / https
Não vi uma resposta completa. Eu uso isso para lidar com a inclusão na WWW.
Por favor, deixe-me saber como isso funciona ou se eu deixei uma brecha.
fonte
www
para não-www
. Você está forçando a inclusão dewww
.Pode haver muita desinformação sobre redirecionamentos htaccess, eu acho. Primeiro, verifique se o site está sendo executado no Unix usando o Apache e não em um host do Windows, se você espera que esse código funcione.
Entretanto, verifique se não há espaços entre as linhas; acrescentei um espaço extra entre as linhas para que fique bem nesta janela.
Este é um trecho de código que pode ser usado para direcionar a versão www do seu site para a versão http: //. Existem outros códigos semelhantes que também podem ser usados.
fonte
Para subpasta
fonte
Para aqueles que precisam acessar o site inteiro SEM o prefixo 'www'.
Mare certifique-se de adicionar isso ao seguinte arquivo
fonte
protossl
variável de ambiente (essa não é uma variável padrão / servidor). Sempre estará vazio, e sempre será redirecionado parahttp
. (A idéia por trás a criaçãoprotossl
no início do código é para quando você quiser preservar o protocolo ao redirecionar No entanto, estes dias você provavelmente deve ser redirecionando para.https
O tempo todo.)Usando .htaccess para redirecionar para www ou não www:
Basta colocar as seguintes linhas de código no seu arquivo .htaccess principal e raiz. Nos dois casos, altere domain.com para o seu próprio nome de host.
Redirecionar para www
Redirecionar para não www
mude DOT para =>. !!!
fonte
Eu usei a regra acima para enviar www para no www e funciona bem na página inicial, no entanto, nas páginas internas eles estão encaminhando para /index.php
Encontrei essa outra regra no meu arquivo .htaccess, que está causando isso, mas não tenho certeza do que fazer a respeito. Qualquer sugestão seria ótima:
fonte
www para não www com https
fonte
Se você deseja remover os
www
doishttp
ehttps
, use o seguinte:Isso redireciona Non ssl
para
E SSL
para
no apache,
2.4.*
você pode fazer isso usando uma diretivaRedirect
withif
,fonte
use: Javascript / jQuery
Ou .htaccess:
e O método PHP:
Ajax
fonte
A única maneira de fazê-lo funcionar ...
fonte
Se você está forçando www. em url ou forçar ssl prototcol, tente usar possíveis variações no arquivo htaccess, como:
fonte
RewriteCond %{SERVER_PORT} 80
sugerir usar uma verificação mais universal:RewriteCond %{HTTPS} off
A resposta selecionada e muitas outras soluções aqui eliminaram a parte do URL depois de /, então basicamente ele sempre foi redirecionado para o domínio principal, pelo menos para mim .. Então, eu estou adicionando uma amostra de trabalho respeitando o caminho completo após a barra ..
fonte
Abordagem alternativa se a personalização do .htaccess não for a opção ideal:
Eu criei um servidor de redirecionamento simples para uso público. Basta adicionar um registro A ou CNAME:
Mais informações: https://simpleredirect.net
fonte
Não sei por que você deseja remover www. Mas a versão reversa seria:
E a vantagem desse script é: se você tiver algo como test.whattimein.com ou qualquer outro (ambiente para desenvolvimento / teste), ele não redirecionará U para o ambiente original.
fonte
Isso é atualizado para funcionar no Apache 2.4:
A única alteração em relação à de Michael é remover o
[NC]
, que produz o erro "AH00665":fonte
RewriteCond %{REQUEST_FILENAME} !-f [NC]
). ONC
sinalizador faz pouca diferença no item acima, no entanto, o motivo pelo qual oNC
sinalizador deve ser usado aqui é capturar a pequena fração do tráfego de bot que (incorretamente) envia um nome de host em maiúsculas.Adicionado se localhost, ignore o redirecionamento (para fins de desenvolvimento no ambiente local). Se não for host local AND (não é https OU é www), redirecione para https e não www.
fonte
Oi, você pode usar as seguintes regras no seu arquivo htaccess:
fonte