Usando mod_rewrite para impor www em URL

1

Eu tenho um site hospedado que inclui uma seção de compra e regiatria segura que fornece acesso ao conteúdo pago. A validação do certificado SSL falhará se o URL não estiver no formato www.domainname.com. Eu estava olhando para usar regras mod_rewrite para redirecionar se www não foi encontrado na url. Isso funciona, mas o redirecionamento para as páginas seguras falha com um erro 500. Verificando os logs do ssl_error que eu vejo:

[Wed Jul 29 21:20:32 2009] [alert] [client xx.xx.xx.xx] /vservers/domainname/htdocs/.htaccess: RewriteEngine not allowed here, referer: http://www.domainname.com/index.php?option=com_content&view=category&id=2&Item=9

.htaccess nós tentamos:

#  mod_rewrite in use
RewriteEngine On

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

Não tenho certeza se isso é algo que posso corrigir ou devo esperar que o provedor de hospedagem resolva o problema.

    
por Chief A-G 30.07.2009 / 15:15

2 respostas

2

Como já foi dito, você só pode usar o RewriteEngine na configuração central, não no .htaccess. Como o erro não é que ele não reconheceu o RewriteEngine, você pode ter certeza de que o mod_rewrite está instalado. O que você não pode ter certeza é se o RewriteEngine foi habilitado para o seu vhost. A melhor coisa a fazer é tentar.

Se o site que você está hospedando for dinâmico, você pode adicionar um código para verificar $ SERVER_NAME e redirecionar de forma adequada, mas isso pode ser um esforço muito grande se você não tiver um único local onde possa adicionar o código. / p>

Caso contrário, eu diria que você está preso esperando pelo seu provedor.

Se você pudesse ter modificado sua configuração central, você pode fazer isso facilmente sem instalar módulos adicionais e sem usar o mod_rewrite. Acho que as pessoas gastam muito tempo tentando usar o mod_rewrite quando há maneiras mais fáceis de fazer as coisas.

<VirtualHost *:80>
   ServerName example.com
   Redirect / http://www.example.com
</VirtualHost>

<VirtualHost *:80>
   ServerName www.example.com
   .
   .
   .
</VirtualHost>

Você pode adicionar linhas 'ServerAlias' adicionais ao host virtual superior se precisar de mais de um host para redirecionar.

    
por 30.07.2009 / 16:44
0

Parece que você não pode usar o rewriteengine lá. Se você não pode alterar sua configuração apaChe, a única coisa que você pode tentar é remover o "RewriteEngine on" e esperar que o mod_rewrite seja habilitado em todo o servidor

Se você pode alterar o conf apache, mova RewriteEngine ou adicione "AllowOverride all"

    
por 30.07.2009 / 15:32

Tags