Tentando conseguir
www.example.com
ir diretamente para
www.example.com/store
Eu tentei vários bits de código e nenhum funciona.
O que eu tentei:
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^(.+)\www.example\.com$
RewriteRule ^/(.*)$ /samle/%1/$1 [L]
O que estou fazendo de errado?
.htaccess
mod-rewrite
redirect
Willi Mentzel
fonte
fonte
Fiquei surpreso que ninguém mencionou isso:
Basicamente, ele redireciona a raiz e apenas a URL raiz. A resposta originou-se neste link
fonte
RedirectMatch 301 ^/$ /store/
Tente o seguinte:
Se você deseja um redirecionamento externo (que faz com que o navegador visitante mostre o URL redirecionado), defina o
R
sinalizador também:fonte
www.example.com
como o URI após o redirecionamento? Caso contrário, como seria alterado para fazer isso?RewriteCond
e a primeiraRewriteRule
?/aboveSubDir
pelo navegador ou pelo servidor.Aqui está o que eu usei para redirecionar para um subdiretório. Isso foi feito de forma invisível e ainda permite solicitações que correspondem a um arquivo existente ou o que quer que seja.
Altere site.com e faça a divisão com seus valores.
fonte
Para definir um redirecionamento invisível da raiz para a subpasta, você pode usar o seguinte RewriteRule em /root/.htaccess:
A regra acima redirecionará internamente o navegador de:
para
E
para
enquanto o navegador permanecer na pasta raiz.
fonte
Outra alternativa, se você deseja reescrever o URL e ocultar o URL original:
Com isso, se você digitar
http://www.example.com/product.php?id=4
, por exemplo , ele abrirá o arquivo de forma transparente em,http://www.example.com/store/product.php?id=4
mas sem mostrar ao usuário o URL completo.fonte
QSA
(cadeia de caracteres de consulta anexada) a[L]
([L, QSA]
) se você deseja que as cadeias de consulta sejam transferidas para o URL reescrito.Esta parecia a solução mais simples:
Eu estava recebendo loops de redirecionamento com algumas das outras soluções.
fonte
Não entendi sua pergunta ...
Se você deseja redirecionar todas as solicitações para uma subpasta:
Se você deseja redirecionar para uma subpasta com o nome de domínio
fonte
([^\.]+\.[^\.]+)$
para reservar o domínio como nome da subpasta.Descobri que, para evitar o redirecionamento circular, é importante limitar o escopo do redirecionamento ao diretório raiz. Eu teria usado:
fonte
A maioria das soluções acima está correta, mas todas estão perdendo a transparência do redirecionamento.
No meu caso, ao visitar www.example.com, eu queria ser redirecionado para o subdiretório / loja, mas sem atualizar o URL para www.example.com/store . (tudo o que eu quero é obter o código da página nesse diretório). Se for esse o seu caso, a solução abaixo funciona perfeitamente.
fonte: http://wiki.dreamhost.com/Transparently_redirect_your_root_directory_to_a_subdirectory
fonte
RewriteRule ^(.*)$ http://otherpage.com/subfolder/$1 [L]
mas ela atualiza a URLexample
estore
.example.com
eotherpage.com
domínios. Quando visitoexample.com
, quero que o conteúdootherpage.com/subfolder
seja exibido sem atualizar o URLPode-se usar o redirecionamento também para esse fim
Ou Alias para mapeamento
Edit: mod_alias é aplicável apenas no httpd.conf.
REFERÊNCIAS
fonte
Anteriormente, uso o código a seguir, que funciona corretamente para redirecionar a URL raiz de cada um dos meus domínios / subdomínios para seus subdiretórios de correspondência, que são nomeados exatamente como o sub / domínio em si, conforme abaixo:
No entanto, quando eu quiser adicionar outros subs ou domínios, ele precisará ser adicionado no código acima. Deve ser muito mais conveniente simplificá-lo para funcionar como curinga (*), como abaixo:
Portanto, sempre que outros subdomínios / domínios forem adicionados, desde que o nome do subdomínio tenha um prefixo de sub (como: sub3.domínio1.com, sub1.domínio3.com etc.), o código permanecerá válido.
fonte
Eu acho que os principais problemas com o código que você postou são:
a primeira linha corresponde a um host que começa estritamente com sample.com, portanto, www.sample.com não corresponde.
a segunda linha deseja pelo menos um caractere, seguido por www.sample.com, que também não corresponde (por que você escapou do primeiro w?)
nenhuma das regras incluídas é redirecionada para o URL especificado em sua meta (além disso, a amostra está incorreta como amostra, mas isso é irrelevante).
Para referência, veja o código que você possui atualmente:
fonte
Um pouco pesquisando, me dá os seguintes resultados:
Ou tente o seguinte:
Como não fiz muito redirecionamento no arquivo .htaccess, não tenho certeza se isso funcionará.
fonte
Duas maneiras possíveis de obter soluções para isso são: 1. Crie um
.htaccess
arquivo na pasta raiz como em (substitua example.com e my_dir pelos seus valores correspondentes):Use o RedirectMatch para redirecionar apenas o URL raiz “/” para outra pasta ou URL,
RedirectMatch ^ / $ http://www.example.com/my_dir
fonte
tente usar as linhas abaixo no htaccess
Nota: pode ser necessário verificar qual é o nome do default.html
default.html é o arquivo carregado por padrão na pasta raiz.
RewriteEngine
Redirect /default.html http://example.com/store/
fonte
você acabou de adicionar esse código ao seu arquivo .htaccess
fonte
Responderei à pergunta original, não apontando outra sintaxe possível (existem muitas entre as outras respostas), mas apontando algo que já tive que lidar, que demorou um pouco para descobrir:
Existe a possibilidade de que% {HTTP_HOST} não esteja sendo preenchido corretamente ou de forma alguma. Embora eu tenha visto isso apenas em uma máquina em um host compartilhado, com alguns apache 2.2 com patches personalizados, é uma possibilidade.
fonte
Isso tentará subdiretirar se o arquivo não existir na raiz. Precisava disso, pois mudei um site .html básico que espera ser executado no nível raiz e o enviei para um subdiretório. Funciona apenas se todos os arquivos estiverem simples (sem truques .htaccess no subdiretório possível). Útil para itens vinculados, como arquivos css e js.
fonte