使用 .htaccess 更改默认索引页

使用 .htaccess 更改默认索引页

假设我的域名是foo.com,我index.html的根目录中有。
然后,如果我在中安装购物车/cart,它有index.php作为其索引页。

我如何将默认索引更改为/cart/index.php使用.htaccess

答案1

添加以下内容以创建first.html您的索引页

DirectoryIndex first.html

您还可以拥有多个文件,例如:

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

在这里,服务器将从左到右检查文件并使用第一个可用的文件

所以我想你的配置应该是

DirectoryIndex index.php index.html

index.php因为你想在目录中找到它时给予更高的优先级

答案2

使用重定向:

您可以使用Redirect指令(Mod_Alias)。编辑.htaccess文件并添加以下行:

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

或者你可以使用RedirectPermanent指令。编辑.htaccess文件并添加以下行:

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

使用重写引擎:

您可以使用Mod_Rewrite实现与上述相同的结果。编辑.htaccess文件并添加以下行:

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

关于 Mod_Rewrite 的更多阅读:[1][2][3]


智能重定向,使用 PHP:

编辑.htaccess文件并添加以下行:

# Obliterate previous DirectoryIndex order:
DirectoryIndex disabled

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

创建名为 的 PHP 文件site-condition.php,它将根据以下顺序优先级将初始请求重定向到第一个现有文件:

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

其内容site-condition.php如下:

<?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;
        }
?>

根据这个例子/cart必须是DocumentRoot当前 VHost 的。

关于使用的 PHP 函数的进一步阅读:[1][2][3]

相关内容