Создайте index.html по умолчанию, но разрешите посещать index.php, если набрал
У меня есть следующая строка в моем файле .htaccess:
DirectoryIndex index.html index.php
Каждый раз, когда я перехожу к index.php, он принимает меня к index.html. Возможно ли разрешить оба варианта, но оставить index.html значение по умолчанию для пользователей, посещающих сайт www.domain.com?
Ответы
Ответ 1
По умолчанию для DirectoryIndex установлено значение:
DirectoryIndex index.html index.htm default.htm index.php index.php3 index.phtml index.php5 index.shtml mwindex.phtml
Apache будет искать каждый из вышеперечисленных файлов по порядку и обслуживать первый, который он находит, когда посетитель запрашивает только каталог. Если веб-сервер не находит файлы в текущем каталоге, которые соответствуют именам в директиве DirectoryIndex, в браузере будет отображаться список каталогов, отображающий все файлы в текущем каталоге.
Порядок должен быть DirectoryIndex index.html index.php
//default - index.html
Ссылка: Здесь.
Ответ 2
Если вы используете WordPress, теперь есть проблема с фильтром:
remove_filter('template_redirect', 'redirect_canonical');
(Поместите это в свою тему functions.php
)
Это говорит WordPress не перенаправлять index.php
обратно на корневую страницу, а сидеть там, где она есть. Таким образом, index.html
может быть назначено страницей по умолчанию в .htaccess
и может работать рядом с index.php
.
Ответ 3
Я согласен с принятым ответом @TheAlpha, Apache читает целевые файлы DirectoryIndex слева направо, если первый файл существует, apche обслуживает его, а если он этого не делает, следующий файл будет служить индексом для каталога. Поэтому, если у вас есть следующая директива:
DirectoryIndex file1.html file2.html
Apache будет служить /file.html в качестве индекса, вам нужно будет изменить порядок файлов, если вы хотите установить /file 2.html в качестве индекса
DirectoryIndex file2.html file1.html
Вы также можете установить индексный файл с помощью RewriteRule
RewriteEngine on
RewriteRule ^$ /index.html [L]
RewriteRule выше перепишет вашу домашнюю страницу в /index.html, переписывание происходит внутри, поэтому http://example.com/ покажет вам содержимое index.html,
Ответ 4
RewriteEngine on
RewriteRule ^(.*)\.html$ $1.php%{QUERY_STRING} [L]
Поместите эти две строки вверху вашего файла .htaccess. Он отобразит .html в URL-адресе для ваших .php-страниц.
RewriteEngine on
RewriteRule ^(.*)\.php$ $1.html%{QUERY_STRING} [L]
Используйте это для отображения .php в URL-адресе для ваших .html-страниц.
Ответ 5
DirectoryIndex index.html index.htm default.htm index.php index.php3 index.phtml index.php5 index.shtml mwindex.phtml
у него нет никаких средств?
вам может просто нужно добавить вот так!
<IfModule dir_module>
DirectoryIndex index.php index.html index.htm
</IfModule>
![введите описание изображения здесь]()