htaccess redirect / regras de reescrita para domínio específico de idioma

4

Eu tenho o site multilíngüe Grav CMS e dois domínios: grav-site.pl e grav-site.com

Eu quero redirecionar:

  1. grav-site.pl/en - > %código%
  2. grav-site.com - > %código%

Em grav knolage base eu encontrei solução que deveria funcionar Eu adiciono isso ao meu grav-site.com/pl

## Begin - Multilanguage Setup
RewriteRule ^en/?$ "http://grav-site.com" [R=301,L]
RewriteRule ^pl/?$ "http://grav-site.pl" [R=301,L]

# handle sub pages, exclude admin path
RewriteCond %{REQUEST_URI} !(admin) [NC]
RewriteRule ^en/(.*)$ "http://grav-site.com/$1" [R=301,L]
RewriteCond %{REQUEST_URI} !(admin) [NC]
RewriteRule ^pl/(.*)$ "http://grav-site.pl/$1" [R=301,L]
# End - Multilanguage Setup

mas quando vou para grav-site.pl nothings happend (não há redirecionamento) e o mecanismo do CMS remove .htaccess

Como alterar as entradas do .htaccess para obter um redirecionamento adequado?

P.S. resto do link .htaccess link

    
por user19291 01.06.2017 / 16:41

2 respostas

1

I add entries from post above after <IfModule mod_rewrite.c>...</IfModule>, just on end of file

Esta parece ser a principal causa do seu problema. Essas diretivas (redirecionamentos) precisariam chegar perto do início do arquivo, antes das reescritas existentes - caso contrário, elas nunca serão processadas.

O "front controller" (no meio do arquivo que inicia ## Begin - Index ) captura todas as requisições e as encaminha através de index.php (seu "front controller"), qualquer diretiva mod_rewrite que segue isto é improvável de ser processada , a menos que a solicitação seja para um arquivo físico.

Como regra geral, os redirecionamentos externos devem sempre ir antes de reescrever internos .

Pela mesma razão, eu questionaria a localização de suas diretivas de "segurança" (no bloco que inicia ## Begin - Security ), que também segue seu controlador frontal. Isso pode realmente ser OK - como eles só são processados para arquivos que existem. No entanto, novamente como regra geral, as diretivas de bloqueio / segurança normalmente chegam perto do topo do arquivo (mesmo antes dos redirecionamentos).

    
por 02.06.2017 / 16:39
0

Descomente a linha RewriteBase no seu arquivo .htaccess que é o link

Como redirecionar "www.example1.com" para "www.example2.com"

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

Redirecionar de "www.example.com" para "example.com" e vice-versa

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

e vice-versa

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

Redirecionar de todos os subdomínios inexistentes para o site:

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

Redirecionar todas as solicitações do website para uma página da web específica:

RewriteEngine On 
RewriteBase / 
RewriteRule ^(.*)$ http://example.com/desired_page/ [L,R=permanent]
    
por 01.06.2017 / 21:21