Redirecionando para minha pasta do projeto Laravel

1

Eu tenho o seguinte conteúdo no meu arquivo .htaccess . Eu esperava que ele redirecionasse para minha pasta de projeto /hc , que está no mesmo nível que .htaccess . O redirecionamento não está acontecendo e ainda está exibindo o conteúdo de index.html .

RewriteEngine On

RewriteBase /hc/

<Files .*>
    Order Deny,Allow
    Deny From All
</Files>

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

RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php?/$0 [PT,L,QSA]
    
por logeeks 17.01.2017 / 05:26

2 respostas

0

Você precisa deixar a opção "reescrever" no arquivo de configuração do apache "disponível em sites". Para laravel você deve ter cuidado porque o seu DocumentRoot (pasta pública onde você precisa do arquivo .htaccess) está dentro da pasta do projeto.

    
por 17.01.2017 / 14:49
0

I expected it to redirect to my project folder /hc which is at the same level as .htaccess.

Esse é o problema. Se o arquivo .htaccess estiver no subdiretório /hc , ele nunca verá a solicitação, a menos que você já inclua o subdiretório /hc na solicitação.

Seu arquivo .htaccess precisa estar no diretório pai. ie. a raiz do documento. (Incidentalmente, você só precisaria da diretiva RewriteBase /hc/ se esse arquivo estivesse na raiz do documento.)

Ou inclua um arquivo adicional .htaccess no documento raiz que simplesmente encaminha todas as solicitações para o diretório /hc (seu front controller), por exemplo:

RewriteEngine On
RewriteRule (.*) hc/$1 [L]

Note que como o mod_rewrite não é herdado por padrão, uma vez que o pedido é reescrito no subdiretório /hc , o arquivo .htaccess no subdiretório é então processado e sobrescreve as diretivas mod_rewrite no arquivo pai .htaccess , então você não termina com um loop de reescrita.

RewriteRule .* index.php?/$0 [PT,L,QSA]

UPDATE: A string substituição no último RewriteRule difere da diretiva anterior. Ambos provavelmente não estão corretos. Você pode querer remover o ? na diretiva acima, a menos que você pretenda a nós a string de consulta, então você deve adicionar um ? à diretiva anterior. Tal como está, o primeiro usa informação do caminho para passar o URL, o segundo usa a cadeia de consulta .

Aliás, o sinalizador PT é redundante em arquivos .htaccess por diretório. E se você não estiver usando a string de consulta, o QSA flag também poderá ser removido.

    
por 17.01.2017 / 10:42