Alterando a página de índice padrão com .htaccess

0

Suponha que meu domínio seja foo.com , eu tenha index.html em meu diretório raiz.
Então, se eu instalar um carrinho de compras em /cart e ele tiver index.php como sua página de índice.

Como eu alteraria o índice padrão para /cart/index.php usando .htaccess ?

    
por Monkeybus 08.04.2017 / 04:30

2 respostas

2

Adicione o seguinte para tornar first.html sua página de índice

DirectoryIndex first.html

Você também pode ter vários arquivos como em:

DirectoryIndex first.html index.htm index.html index.php

Aqui, o servidor verificará os arquivos da esquerda para a direita e usará o primeiro disponível

Então eu acho que você configuração deve ser

DirectoryIndex index.php index.html

Como você deseja ot dar mais prioridade a index.php quando for encontrado em um diretório

    
por akabhirav 08.04.2017 / 04:44
1

Use os redirecionamentos:

Você pode usar a diretiva Redirect (Mod_Alias). Edite seu arquivo .htaccess e adicione esta linha:

Redirect permanent "/index.html" "/cart/index.php"

Ou você pode usar a diretiva RedirectPermanent . Edite seu arquivo .htaccess e adicione esta linha:

RedirectPermanent "/index.html" "/cart/index.php"

Use o mecanismo de reescrita:

Você pode usar Mod_Rewrite para obter o mesmo resultado acima. Edite seu arquivo .htaccess e adicione estas linhas:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} !cart
RewriteRule "^$" "/cart/index.php$1" [R=301,L]

Outras leituras sobre Mod_Rewrite: [1] ; [2] ; [3] .

Redirecionamento inteligente usando PHP:

Edite seu arquivo .htaccess e adicione estas linhas:

# Obliterate previous DirectoryIndex order:
DirectoryIndex disabled

# Create new DirectoryIndex order:
DirectoryIndex site-condition.php index.php index.html

Crie o arquivo PHP, chamado site-condition.php , que redirecionará a solicitação inicial para o primeiro arquivo existente de acordo com essa prioridade de pedido:

  1. /cart/index.php
  2. /index.php
  3. /index.html

O conteúdo de site-condition.php pode ser semelhante:

<?php
        $primary_index = 'cart/index.php';
        $secondary_index = 'index.php';
        $tertiary_index = 'index.html';

        if (file_exists($primary_index)) {
                header("Location: /$primary_index");
                exit;
        } elseif (file_exists($secondary_index)) {
                header("Location: /$secondary_index");
                exit;
        } elseif (file_exists($tertiary_index)) {
                header("Location: /$tertiary_index");
                exit;
        } else {
                echo "<html><head><title>Under construction!</title></head>";
                echo "<body><h1>Under construction!</h1></body></html>";
                exit;
        }
?>

De acordo com este exemplo, /cart deve ser um subdiretório de DocumentRoot do VHost atual.

Outras leituras sobre funções PHP usadas: [1] ; [2] ; [3] .

    
por pa4080 08.04.2017 / 15:18