Изменение страницы индекса по умолчанию с помощью.htaccess
Предположим, мой домен foo.com
, Я имею index.html
в моем корневом каталоге.
Тогда, если я установлю корзину в /cart
и это имеет index.php
как его индексная страница.
Как бы я изменил индекс по умолчанию на /cart/index.php
с помощью .htaccess
?
2 ответа
Добавьте следующее, чтобы сделать first.html
Ваша индексная страница
DirectoryIndex first.html
Вы также можете иметь несколько файлов, как в:
DirectoryIndex first.html index.htm index.html index.php
Здесь сервер проверит файлы слева направо и использует первый доступный
Так что я думаю, что ваша конфигурация должна быть
DirectoryIndex index.php index.html
Так как вы хотите не отдавать больше приоритет index.php
когда он найден в каталоге
Использовать перенаправления:
Ты можешь использовать 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.
Дальнейшее чтение об используемых функциях PHP: [1]; [2]; [3].