WordPress имеет функцию в своем htaccess-файле, которая выполняет автоматическое перенаправление, если имена файлов совпадают с существующим источником.
Например, если вы введете http://rechnen-in-der-wolke.net/datensicherheit он перенаправит вас на http://rechnen-in-der-wolke.net/datensicherheit-cloud-anbieter-hagel-it/
Как отключить эту функцию без снижения общей функциональности?
Вот так выглядит стандартный htaccess-файл:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Я уже пытался удалить RewriteCond %{REQUEST_FILENAME} !-f
(ничего не меняется) или RewriteCond %{REQUEST_FILENAME} !-d
(ничего не меняется) или оба (цикл перенаправления).
Я нашел решение своей проблемы здесь: https://wordpress.stackexchange.com/questions/3326/301-redirect-instead-of-404-when-url-is-a-prefix-of-a-post-or-page-name
В functions.php необходимо вставить следующий код:
add_filter('redirect_canonical', 'no_redirect_on_404');
function no_redirect_on_404($redirect_url)
{
if (is_404()) {
return false;
}
return $redirect_url;
}
Спасибо всем, кто мне помог!
Wordpress не перенаправляет ваши URL-адреса по желанию, но сохраняет каждый старый URL-адрес вместе с создаваемым постом, даже если он больше не используется.
Если вы измените заголовок сообщения, Wordpress перенаправит (301) старый на новый URL. Это не имеет ничего общего с .htaccess, это функция wordpress. К сожалению, я никогда не видел, чтобы эта функция была должным образом задокументирована в кодексе. Следовательно, я не могу сказать вам, какая функция wp_core это делает и где в ядре она расположена (и вы же не хотите трогать ядро, верно?).
Ранее использованные ярлыки хранятся в базе данных в wp_postmeta
стол. Проверить _wp_old_slug
в столбце meta_key (фактические заголовки хранятся в столбце meta_value). Если вы когда-либо хотите, чтобы это поведение по умолчанию не происходило в конкретном случае, здесь нужно удалить значение и выполнить поиск «использованных» URL-адресов.