假设我的域名是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
,它将根据以下顺序优先级将初始请求重定向到第一个现有文件:
/cart/index.php
/index.php
/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 的。