WordPress MultiSite перенаправляет страницы на домашнюю страницу - PullRequest
0 голосов
/ 16 октября 2019

Краткое описание проблемы: У меня есть новый многосайтовый WordPress, настроенный как подкаталоги (тот же базовый URL с подкаталогами языков, как, например, domain.com/en-gb/), он работает сам по себекроме этой очень раздражающей проблемы: Каждый раз, когда я пытаюсь получить доступ к подстранице основного домена (например, domain.com/page/ или domain.com/wp-config), он перенаправляет на домашнюю страницу этого домена. домен (domain.com).

Наблюдение 1: Странно, это происходит только при первой попытке загрузить подстраницу основного домена на вкладке. Как, например, вы находитесь на Facebook, видите объявление, нажимаете на ссылку domain.com/subpage или говорите, что открываете пустую вкладку и вводите domain.com/wp-admin, и вы перенаправляетесь на domain.com. НО ТОГДА, если теперь из этой вкладки вы пытаетесь перейти на подстраницу (любую подстраницу), она работает нормально. Это происходит только при первой загрузке домена на странице.

Замечание 2: Я думаю, что проблема началась, когда я включил SSL с плагином Really Simple SSL (который, возможно, плохо поддерживает мультисайты, я не знаю). Я попытался удалить его часть файла .htaccess, но это ничего не решило. Я не уверен на 100%, что он работал до включения Really Simple SSL, но у меня есть ощущение, что это как-то связано. Я не знаю, добавляет ли он что-то еще, кроме строк в .htaccess (как, например, некоторое перенаправление в базе данных?).

Замечание 3: Эта проблема, похоже, не влияетподкаталоги. Например, если я захожу на domain.com/en-gb/page, это работает как надо, даже на новой пустой вкладке. Похоже, это касается только основного домена.

Постоянные ссылки установлены на Custom: /% postname% /

Информация о сервере: Apache Хостинг, компания: OVH Версия PHP:7.3.6 MySQL vesion: 5.6.43

Вот .htaccess (с действительно удаленной частью SSH уже удаленной):

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
</IfModule>
# END WordPress
# BEGIN ShortPixelWebp
# END ShortPixelWebp

Просто к вашему сведению, это былоЧто Действительно Простой SSH добавлено в начале .htaccess (который я удалил):

# BEGIN rlrssslReallySimpleSSL rsssl_version[3.2.2]
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
</IfModule>
# END rlrssslReallySimpleSSL

А вот wp-config.php (без логинов):

<?php
/**
 * The base configuration for WordPress
 *
 * The wp-config.php creation script uses this file during the
 * installation. You don't have to use the web site, you can
 * copy this file to "wp-config.php" and fill in the values.
 *
 * This file contains the following configurations:
 *
 * * MySQL settings
 * * Secret keys
 * * Database table prefix
 * * ABSPATH
 *
 * @link https://codex.wordpress.org/Editing_wp-config.php
 *
 * @package WordPress
 */

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'XXXXXXXXXXXX');

/** MySQL database username */
define('DB_USER', 'XXXXXXXXXXXX');

/** MySQL database password */
define('DB_PASSWORD', 'XXXXXXXXXXXX');

/** MySQL hostname */
define('DB_HOST', 'XXXXXXXXXXXX');

/** Database Charset to use in creating database tables. */
define('DB_CHARSET', 'utf8');

/** The Database Collate type. Don't change this if in doubt. */
define('DB_COLLATE', '');

/**#@+
 * Authentication Unique Keys and Salts.
 *
 * Change these to different unique phrases!
 * You can generate these using the {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service}
 * You can change these at any point in time to invalidate all existing cookies. This will force all users to have to log in again.
 *
 * @since 2.6.0
 */
define('AUTH_KEY',         'XXXXXXXXXXXX');
define('SECURE_AUTH_KEY',  'XXXXXXXXXXXX');
define('LOGGED_IN_KEY',    'XXXXXXXXXXXX');
define('NONCE_KEY',        'XXXXXXXXXXXX');
define('AUTH_SALT',        'XXXXXXXXXXXX');
define('SECURE_AUTH_SALT', 'XXXXXXXXXXXX');
define('LOGGED_IN_SALT',   'XXXXXXXXXXXX');
define('NONCE_SALT',       'XXXXXXXXXXXX');

/**#@-*/

/**
 * WordPress Database Table prefix.
 *
 * You can have multiple installations in one database if you give each
 * a unique prefix. Only numbers, letters, and underscores please!
 */
$table_prefix  = 'mod155_';

/**
 * For developers: WordPress debugging mode.
 *
 * Change this to true to enable the display of notices during development.
 * It is strongly recommended that plugin and theme developers use WP_DEBUG
 * in their development environments.
 *
 * For information on other constants that can be used for debugging,
 * visit the Codex.
 *
 * @link https://codex.wordpress.org/Debugging_in_WordPress
 */
define('WP_DEBUG', false);

/* Multisite */
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'www.XXXXXXXXXXXX.co');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
define('NOBLOGREDIRECT', 'https://www.XXXXXXXXXXXX.co' );

define('ADMIN_COOKIE_PATH', '/');
define('COOKIE_DOMAIN', '');
define('COOKIEPATH', '');
define('SITECOOKIEPATH', '');

/* That's all, stop editing! Happy blogging. */

/** Absolute path to the WordPress directory. */
if ( !defined('ABSPATH') )
    define('ABSPATH', dirname(__FILE__) . '/');

/* Fixes "Add media button not working", see http://www.carnfieldwebdesign.co.uk/blog/wordpress-fix-add-media-button-not-working/ */
define('CONCATENATE_SCRIPTS', false );

/** Sets up WordPress vars and included files. */
require_once(ABSPATH . 'wp-settings.php');

Это действительно раздражает и, очевидно, снижает коэффициент конверсии основного веб-сайта (потому что весь трафик перенаправляется на домашнюю страницу, несмотря ни на что)

Не могли бы вы помочь мне решитьэто? У меня есть доступ ко всему сайту / базе данных, так что я могу попробовать что угодно.

Заранее спасибо, Максим

1 Ответ

0 голосов
/ 16 октября 2019

Итак, всем, кто интересуется, после нескольких тестов, я смог сузить ошибку и, наконец, понять и полностью ее воспроизвести.

Реальная проблема заключалась в том, что она перенаправляла любуюURL, который не имеет "www."до этого (я установил свой URL с помощью www. при выполнении конфигурации).

Итак, вот как я решил это: я пошел в свой .htaccess и установил его следующим образом:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
</IfModule>
# END WordPress

Так что теперь он перенаправляет все URL-адреса (с или без www. И с или без https) на https://www.

И это решило

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...