Перенаправити весь веб-сайт на одну сторінку


10

Мені потрібно перенаправити цілий сайт WordPress на одну сторінку WordPress. Різновид обслуговування, але переспрямування має перейти на опубліковану сторінку WordPress. На жаль, на сторінці технічного обслуговування, яку мені потрібно показати, потрібно використовувати інші плагіни WordPress.

Я не знаю жодного плагіну режиму обслуговування, який дозволяє це робити. Щонайбільше, вони дозволяють писати спеціальний HTML / CSS-код.

Я думав про правило .htaccess mod_rewrite. Однак я дуже слабкий з mod_rewrite.

По-перше, я відключив канонічні переадресації .

Потім я спробував використати:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/index.php?page_id=813$
RewriteRule ^(.*)$ /index.php?page_id=813 [R=307,L]

Однак ці правила генерують петлі переадресації. page_id=813Ідентифікатор моєї сторінки технічного обслуговування, звичайно.

Хтось знає плагін режиму обслуговування, який перенаправляє на опубліковану сторінку?

Крім того, може хтось допомогти мені виправити правила mod_rewrite? Додаткові ура, якщо ми можемо залишитись /wp-adminпоза правилами переадресації.

Відповіді:


14

Насправді ви можете це зробити з самого WordPress, замість того, щоб придумати заплутане і переосмислене виправлення .htaccess.

Ми можемо підключитися до template_redirectфільтра, який спрацьовує лише на передній панелі (не у wp-admin). Потім ми використовуємо цю is_page()функцію, щоб перевірити, чи переглядаємо ми сторінку з ідентифікатором 813. Якщо ні, перенаправляємо на цю сторінку за допомогою wp_redirect()функції.

add_action( 'template_redirect', function() {
    if ( is_page( 813 ) ) {
        return;
    }

    wp_redirect( esc_url_raw( home_url( 'index.php?page_id=183' ) ) );
    exit;
} );

Це буде чудово підходити для режиму обслуговування, оскільки перенаправлення проводиться із 302 'тимчасовим' HTTP-заголовком, даючи ботам та пошуковим системам знати, що ваш веб-сайт незабаром запрацює. Однак, якщо ви постійно переміщуєте сайт, ви можете використовувати 301 "постійний" HTTP-заголовок для переадресації. Це можна зробити, додавши до wp_redirectфункції другий параметр . Приклад:

add_action( 'template_redirect', function() {
    if ( is_page( 813 ) ) {
        return;
    }

    wp_redirect( esc_url_raw( home_url( 'index.php?page_id=183' ) ), 301 );
    exit;
} );

Це чудово працює і для моєї мети. За винятком додавання повороту - сайт назавжди "вниз", і я хочу, щоб WP працював і працював, використовуючи сторінку прощання як домашню сторінку. Чи є спосіб додати заголовок 301 до цього типу переадресації для SEO?
Tapefreak

@Tapefreak Ви можете встановити HTTP-заголовок як другий параметр wp_redirectфункції. Приклад:wp_redirect( home_url( 'index.php?page_id=183' ), 301 );
ши

1

Я вбудував прийняту відповідь @shea в однофайковий плагін і додав два варіанти: перенаправляти лише користувачів, які не є адміністратором, і перенаправляти на довільну URL-адресу.

Якщо ви зацікавлені, будь ласка, скачайте плагін з Github => https://github.com/Idearia/wp-redirect-website-to-url .

Параметри

Параметри плагіна дуже прості; наразі вони жорстко закодовані у файлі плагінів, але я можу розглянути можливість створення сторінки з опціями, якщо люди вимагають її:

  • DESTINATION_URL : Повна URL-адреса, куди потрібно перенаправляти користувачів; може бути сторінкою поза доменом веб-сайту.
  • DESTINATION_URL_ID : Якщо URL-адреса переадресації є сторінкою WordPress або публікацією, вкажіть тут її ідентифікатор WordPress.
  • USER_CAPABILITY : Користувачі з цією можливістю не будуть перенаправлені; залишити порожнім, щоб перенаправити всіх; за замовчуванням - "management_options", який увімкнено для користувачів адміністратора.
  • REDIRECT_STATUS_CODE : Статус перенаправлення: 302 для тимчасового переадресації, 301 для постійного переадресації.
  • DEBUG : Чи надрукувати інформацію про налагодження в debug.log.

Оновлена ​​інформація на сторінці Github => https://github.com/Idearia/wp-redirect-website-to-url .

Зверніть увагу, що плагін є дуже простим; більш досвідчені користувачі можуть замість цього розглянути один із багатьох плагінів технічного обслуговування, доступних у сховищі плагінів WordPress.org.

Повідомте мене, якщо у вас є проблеми із запуском плагіна 😊


0

Я б пішов на набагато простіше рішення. Я припускаю, що ви хочете, щоб хтось бачив лише одну сторінку - не потрібно, щоб жодна WP-сторінка була видимою - для будь-якого запиту вашого домену.

Отже, чому б не створити HTML-сторінку, розмістіть її за допомогою CSS та покладіть її в іншу папку на вашій хостинговій платформі. Переконайтеся, що сторінка виглядає так, як вам потрібно.

Тоді просто вкажіть свій домен на нову папку. На більшості хостинг-платформ ви можете вказати базову папку домену. Тому вкажіть свій домен на нову базову папку. Немає необхідності у складних переадресаціях htaccess, або плагінах WP, або спеціальних фільтрах для підключення до WP.

Або ви можете перемістити весь вміст із поточної кореневої папки (доменів) домену та вставити у свій простий HTML-файл на своєму місці.

У місцях розміщення також може бути "глобальне переадресація" для будь-якого запиту на будь-яку сторінку вашого домену.

У будь-якому випадку було б простим рішенням ваших потреб мати лише одну сторінку для всього вашого домену.

Якщо ви дійсно хочете рішення htaccess, використовуйте це:

RewriteEngine on

RewriteRule ^(.*)$ http://www.example.com/  [R=permanent,L]

..замінивши власний домен. Здійснює також задоволення від SEO.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.