Изменение страницы индекса по умолчанию с .htaccess

Предположим, что мой домен foo.com, у меня есть index.html в моем корневом каталоге. Затем, если я устанавливаю корзину для покупок в /cart, и она index.php является ее индексной страницей.

Как изменить индекс по умолчанию на /cart/index.php с помощью .htaccess?

0
задан 11 April 2017 в 23:22

6 ответов

Добавьте следующую команду, чтобы сделать first.html вашу индексную страницу

DirectoryIndex first.html

Вы также можете иметь несколько файлов, как в:

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

Здесь сервер будет проверять файлы слева направо и использовать первый доступный

Итак, я думаю, что вы должны быть

DirectoryIndex index.php index.html

Поскольку вы хотите, чтобы более высокий приоритет index.php, когда он найден в каталог

2
ответ дан 18 July 2018 в 15:21

Использовать перенаправления:

Вы можете использовать директиву Redirect (Mod_Alias). Отредактируйте файл .htaccess и добавьте эту строку:

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

Или вы можете использовать директиву Redirect . Измените файл .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: Mod_Rewrite ; [2]; [!]

Смарт-перенаправление с использованием 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: [2] ; [2]; [D14] [3] .

1
ответ дан 18 July 2018 в 15:21

Добавьте следующую команду, чтобы сделать first.html вашу индексную страницу

DirectoryIndex first.html

Вы также можете иметь несколько файлов, как в:

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

Здесь сервер будет проверять файлы слева направо и использовать первый доступный

Итак, я думаю, что вы должны быть

DirectoryIndex index.php index.html

Поскольку вы хотите, чтобы более высокий приоритет index.php, когда он найден в каталог

2
ответ дан 24 July 2018 в 20:37
  • 1
    Да, но индексная страница, которую я хочу по умолчанию, находится в другом каталоге .htaccess – Monkeybus 8 April 2017 в 05:49
  • 2
    поместите свой .htaccess в корневую директорию вашего сайта, это не работает, чем разместить копию .htaccess в этой папке – akabhirav 8 April 2017 в 05:50

Использовать перенаправления:

Вы можете использовать директиву Redirect (Mod_Alias). Отредактируйте файл .htaccess и добавьте эту строку:

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

Или вы можете использовать директиву Redirect . Измените файл .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: Mod_Rewrite ; [2]; [!]

Смарт-перенаправление с использованием 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: [2] ; [2]; [D14] [3] .

1
ответ дан 24 July 2018 в 20:37

Добавьте следующую команду, чтобы сделать first.html вашу индексную страницу

DirectoryIndex first.html

Вы также можете иметь несколько файлов, как в:

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

Здесь сервер будет проверять файлы слева направо и использовать первый доступный

Итак, я думаю, что вы должны быть

DirectoryIndex index.php index.html

Поскольку вы хотите, чтобы более высокий приоритет index.php, когда он найден в каталог

2
ответ дан 31 July 2018 в 23:38
  • 1
    Да, но индексная страница, которую я хочу по умолчанию, находится в другом каталоге .htaccess – Monkeybus 8 April 2017 в 05:49
  • 2
    поместите свой .htaccess в корневую директорию вашего сайта, это не работает, чем разместить копию .htaccess в этой папке – akabhirav 8 April 2017 в 05:50

Использовать перенаправления:

Вы можете использовать директиву Redirect (Mod_Alias). Отредактируйте файл .htaccess и добавьте эту строку:

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

Или вы можете использовать директиву Redirect . Измените файл .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: Mod_Rewrite ; [2]; [!]

Смарт-перенаправление с использованием 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: [2] ; [2]; [D14] [3] .

1
ответ дан 31 July 2018 в 23:38

Другие вопросы по тегам:

Похожие вопросы: