Как отобразить статическую HTML-страницу при настройке сайта WordPress?

29 нояб. 2012 г., 17:03:28
Просмотры: 27.4K
Голосов: 9

Я только что установил WordPress. У меня есть не-WordPress заглушка по адресу [корневая папка]/index.html. Я хотел бы оставить эту заглушку активной, пока я работаю над оформлением WordPress. Когда я пытаюсь получить доступ к index.php (также в корневой папке), URL переписывается на index.html. Я не вижу index.html в URL, но отображается заглушка, и я никогда не вижу WordPress.

Я могу получить доступ к панели администратора WordPress без проблем. Кто-нибудь знает, как я могу получить доступ к WordPress, не делая его публичным?

1
Комментарии

Вы можете использовать плагин WordPress Under Construction.

realloc realloc
29 нояб. 2012 г. 17:17:29
Все ответы на вопрос 5
7

Используйте плагин (например, wp-maintenance-mode) или вручную настройте файл .htaccess для перенаправления на заставку, разрешив вашему (или вашей команды) IP-адресу игнорировать это перенаправление. Например:

<IfModule mod_rewrite.c>

RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^127\.0\.0\.1
RewriteCond %{REQUEST_URI} !/splashpage.html$ [NC]
RewriteRule .* /maintenance.html [R=302,L]

</IfModule>

Что касается вашего вопроса, почему index.html загружается из корня — это связано с тем, что он обычно имеет приоритет над index.php. Если вы хотите изменить это поведение, вам нужно изменить директиву DirectoryIndex.

ПРИМЕЧАНИЕ: Для ясности — 127.0.0.1 следует заменить на ваш публичный IP-адрес. Также обратите внимание, что код 302 означает временное перенаправление, что нам и нужно.

29 нояб. 2012 г. 17:21:20
Комментарии

Поскольку я не могу комментировать ответы других людей, я просто хочу сказать, что мне очень нравится ответ @s_ha_dum, но вам следует быть осторожным, так как в Wordpress Codex четко указано:

Не передавайте название роли в current_user_can(), так как это не гарантирует корректную работу.

Sunyatasattva Sunyatasattva
29 нояб. 2012 г. 17:25:34

Я попробовал ваше предложение, но оно не дало эффекта. Я хочу, чтобы отображался index.html. Также я хочу вручную обращаться к wordpress-странице index.php. Но это вызывает редирект на index.html. Я не совсем понимаю, почему вы говорите "редирект на splash-страницу". Это именно то, чего я не хочу. Даже если я полностью очищу .htaccess, редиректы все равно происходят.

4thSpace 4thSpace
29 нояб. 2012 г. 17:43:55

@Sunyatasattva, в исходном коде указано "@param string $capability Capability или название роли.". Интересно, когда это было добавлено в Codex или кем?

s_ha_dum s_ha_dum
29 нояб. 2012 г. 19:13:27

@4thSpace Насколько я понял, вы хотели иметь полный доступ к WordPress без его публикации и перенаправлять пользователей, которым доступ запрещён, на кастомную страницу-заставку, которую вы назвали index.html. Когда я сказал "перенаправлять на страницу-заставку", я имел в виду перенаправлять других пользователей, а не вас самих. Прежде всего, для работы моего предложения, вы изменили 127.0.0.1 на ваш публичный IP?

Sunyatasattva Sunyatasattva
29 нояб. 2012 г. 20:08:32

Да - я изменил свой публичный IP.

4thSpace 4thSpace
29 нояб. 2012 г. 20:15:13

@s_ha_dum Действительно, вы правы. Возможно, предупреждение относится к тому, что передача имени роли в верхнем регистре не будет работать корректно, отсюда "не гарантируется"? Не уверен.

Sunyatasattva Sunyatasattva
29 нояб. 2012 г. 20:15:18

@4thSpace Тогда вы должны корректно видеть index.php при обращении к корню. Попробуйте переименовать index.html во что-то, что не имеет особого значения для сервера (например, splashpage.html). Также попробуйте изменить IP-адрес, которому разрешён доступ, чтобы проверить, правильно ли неавторизованные пользователи перенаправляются на вашу splash-страницу.

Sunyatasattva Sunyatasattva
29 нояб. 2012 г. 20:17:07
Показать остальные 2 комментариев
1

Я считаю, что самый простой способ добиться этого — отредактировать файл .htaccess в корневой директории сайта и добавить в начало следующую строку:

DirectoryIndex index.html index.php

Это изменит порядок приоритета, в котором Apache выбирает файл для использования.

4 сент. 2017 г. 11:59:56
Комментарии

соответствует моим требованиям, где я хочу добавить страницы WP к существующему HTML-сайту, при этом индексная страница остаётся в формате HTML.

Sajal Sajal
5 дек. 2018 г. 15:52:12
0

Попробуйте этот вариант.

function temp_page_redirect() {
    if (!current_user_can('administrator')) {
        wp_safe_redirect('temp.html',307);
    }
}
add_action('template_redirect','temp_page_redirect');

Я не использовал index.html, потому что это имя файла имеет особое значение для сервера. '307' — это код состояния, означающий временное перенаправление. Я предположил, что роль 'administrator' должна иметь доступ :)

29 нояб. 2012 г. 17:20:41
2

Это работает идеально. Добавьте новую папку плагина с этим файлом в качестве index.php.

Из ветки поддержки:

"Чтобы решить исходный вопрос, вы можете отключить каноническое перенаправление, поместив это в директорию плагинов -"

<?php
/*
Plugin Name: Отключение канонического перенаправления URL
Description: Отключает функцию "Каноническое перенаправление URL" в WordPress 2.3 и выше.
Version: 1.0
Author: Mark Jaquith
Author URI: http://markjaquith.com/
*/ 

remove_filter('template_redirect', 'redirect_canonical'); 

?>

Это помогло многим людям в той ветке и может быть правильным решением здесь.

29 нояб. 2012 г. 17:59:00
Комментарии

Одиночная ссылка считается плохим ответом (см. [FAQ#deletion]), так как сама по себе она бессмысленна, а целевой ресурс не гарантированно будет доступен в будущем. Пожалуйста, попробуйте включить хотя бы краткое содержание информации, на которую ссылаетесь.

Rarst Rarst
26 мая 2013 г. 22:21:25
  1. Откройте ваш сайт через FTP-клиент
  2. перейдите в папку /wp-content/plugins/
  3. создайте новую папку с любым именем
  4. создайте файл index.php и поместите в него PHP-код из комментариев выше (используйте всё, что находится в кодовом блоке выше), затем скопируйте его в новую папку
  5. зайдите в админку WordPress и активируйте этот новый плагин
Andy Andy
18 мар. 2019 г. 22:48:21
0

Попробуйте добавить это в ваш файл htaccess:

DirectoryIndex index.html index.php

Этот код означает, что Apache сначала будет искать index.html, и если его не существует, то перейдет к поиску index.php

15 февр. 2019 г. 18:19:19