Как использовать собственный HTML файл вместо главной страницы WordPress
У меня WordPress установлен в корневой папке domain.com
Я хочу, чтобы при посещении domain.com загружался index.html, а domain.com/my-posts/ должен загружать обычные записи WordPress.
Я делаю это для увеличения скорости загрузки моей главной страницы WordPress. Я не хочу, чтобы использовался PHP.
Будет ли работать простое переименование index.php в index.html и размещение там моего HTML контента?

Я настоятельно рекомендую вам прислушаться к уже данным советам. Если ваш PHP хорошо структурирован и вы используете методы кэширования, это не окажет значительного влияния на время загрузки страницы. У нас есть страницы с чрезвычайно сложными запросами, которые почти не оптимизированы, но благодаря умным методам кэширования мы можем обеспечить их загрузку за 500-900 мс или 2-3 с для некоторых более сложных страниц.
Это гораздо лучшее долгосрочное решение, чем использование статической HTML-страницы в качестве главной.
Тем не менее — если вы всё же хотите продолжить с использованием статической HTML-страницы (ещё раз, пожалуйста, не делайте этого, особенно если единственная причина — «скорость страницы», так как есть множество других способов уменьшить время загрузки)
... Всё ещё читаете?
Способ 1: .htaccess
«Общепринятый» способ сделать это — использовать правило .htaccess
, которое применяется только к главной странице, например: RewriteRule ^$ http://example.com/path-to-html.html [L,R=301]
Способ 2: Шаблон страницы
Альтернативный вариант, чтобы сохранить некоторую связь с экосистемой WordPress — настроить шаблон страницы:
- Добавьте файл
home.php
(да, PHP-файл) в директорию активной темы:/wp-content/themes/ТЕКУЩАЯ-ТЕМА/home.php
. Поместите следующий «Заголовок шаблона страницы» в этот файл (оставьте заметку для себя или других разработчиков, чтобы было понятнее):
<?php /* * Template Name: Моя HTML-главная страница */ ?> <!-- Эта страница генерируется вне WP в файле: /wp-content/themes/ТЕКУЩАЯ-ТЕМА/home.php --> <!-- Ваш HTML-код здесь -->
Добавьте новую страницу через Страницы > Добавить новую с узнаваемым названием, например «Моя HTML-главная страница».
- В правой части, в селекторе Шаблона, выберите «Моя HTML-главная страница».
- В Настройки > Чтение измените «На главной странице отображать:» на «Статическую страницу» и выберите только что созданную страницу «Моя HTML-главная страница».
Способ 3: Перенос WordPress
Вы также можете установить WordPress в поддиректорию, оставить index.html
в корневой директории и использовать .htaccess
, чтобы убрать /wp из URL.
Способ 4: Не делайте этого.
Ещё раз, я настоятельно рекомендую рассмотреть другие методы:
- Использование преимуществ PHP 7.x и memcache/d
- Плагины кэширования, такие как WP Super Cache/W3 Total Cache
- Оптимизация изображений (вручную или с помощью WP Smush)
- Загрузка изображений через CDN
- Оптимизация загрузки скриптов и стилей (WP Hummingbird может помочь):
- Объединение файлов, где это возможно
- Минификация этих файлов
- Их загрузка через CDN
- Удаление ненужных плагинов, оптимизация JS-функций, удаление неиспользуемых CSS-селекторов и т. д.

У меня nginx, Wp super cache и total cache работают некорректно вместе.

Существует множество руководств и документации по настройке WPSC с Nginx. В качестве альтернативы вы можете рассмотреть PHP-плагины, такие как PHPFastCache. Также убедитесь, что вы используете WP Transients API, особенно для ресурсоемких запросов.

Обратите внимание, что WordPress автоматически использует шаблон home.php
для главной страницы, если он есть в теме. Все эти дополнительные действия со страницами, заголовками шаблонов и настройками совершенно не нужны, если только вы не хотите сделать главную страницу редактируемой в конструкторе страниц или сохранять данные для страницы.

Если ваша проблема заключается в том, что PHP или MySQL замедляют загрузку страницы, я рекомендую установить плагин кэширования и настроить кэширование страниц. Бесплатный плагин, который я использовал для этой цели — W3 Total Cache.
Кэширование страниц по сути делает то, что вам нужно — оно отдаёт статический HTML-файл с ресурсами CSS и JavaScript вместо выполнения PHP-запросов и запросов к MySQL при каждой загрузке страницы.
Оно работает, предварительно генерируя каждую страницу как статический HTML-файл, а затем отдаёт эти статические файлы вместо динамического движка WordPress на PHP/MySQL.
Это намного проще в настройке, чем управление отдельным статическим HTML-файлом для вашей целевой страницы.

примечание: по моему опыту W3TC - это неотлаживаемое дерьмо. Я понимаю, что у тебя с ним лучше получилось, чем у меня, но я счел нужным оставить здесь заметку, что есть другие плагины, которые могут быть лучше

Я нашел простое решение с использованием index.html. Вы можете добавить свою целевую страницу index.html, а затем просто определить её в качестве домашней страницы в файле .htaccess:
DirectoryIndex index.html index.php
Это заставит использовать index.html в качестве домашней страницы, а WordPress будет обрабатывать все остальное.
Я уверен, что есть много других причин для более сложных решений, приведенных выше, но мне нужна была простая целевая страница, чтобы переопределить встроенные функции редиректа и управления пользователями в интранет-теме.
Ответ из: https://wordpress.stackexchange.com/a/211630/64947

Другой метод, если вы используете Apache, заключается в том, чтобы дать вашему индексному файлу специальное имя и добавить это имя в начало списка DirectoryIndex. Например:
Сохраните ваш статический индексный файл как
index-static.html
Откройте
httpd.conf
и отредактируйте списокDirectoryIndex
<IfModule dir_module> DirectoryIndex index-static.html index.php index.html </IfModule>
Сохраните
httpd.conf
и выполните командуsudo service httpd restart
По сравнению с Методом 1 из предыдущего ответа, этот метод имеет преимущество в том, что он не изменяет URL вашей домашней страницы — то есть посетители не увидят static-index.html
в адресе при посещении вашего сайта, так как перенаправление не происходит. Это, вероятно, лучше для целей SEO, а также более прозрачно для посетителей.

Также попробуйте это - вставьте этот код в файл .htaccess
RewriteRule ^(.*)index\.(php|html?)$ /$1 [R=301,NC,L]
Этот код перенаправит ваш index.php файл и загрузит его в браузере. Если вы использовали чувствительные к регистру имена для папки или любого из файлов, это также сработает для их перенаправления и отображения их содержимого.
