Изменение структуры постоянной ссылки - перенаправления в HTACCESS разрывают архивные ссылки

wordpress.stackexchange https://wordpress.stackexchange.com/questions/1343

  •  16-10-2019
  •  | 
  •  

Вопрос

Когда я начал с своего блога, постоянные ссылки и следующая структура:

http://<domain>/%year%/%monthnum%/%day%/%postname%/

Некоторое время назад я изменил структуру постоянной ссылки на "http://<domain>/%postname%/" Только.

Чтобы заняться внешними ссылками на старую постоянную структуру, я добавил следующую строку в свой HTACCESS-файл:

RedirectMatch 301 /([0-9]+)/([0-9]+)/([0-9]+)/(.*)$ http://<domain>/$4

Теперь проблема в том, что линия перенаправления разбивает архивные ссылки, например. "http://<domain>/2010/09/02«Передана на первую страницу вместо того, чтобы показывать посты с 2 сентября 2010 года.

Можно ли исправить директиву перенаправления в HTACCESS, или я не смогу есть торт и иметь его тоже?

Это было полезно?

Решение

Redirectmatch mod_alias не так мощный, как mod_rewrite. Если у вас есть Mod_rewrite на вашем хосте (например, симпатичные постоянные ссылки используют его), вы можете сделать перенаправление, только если URL не находится в формате архивной ссылки.

Чтобы проверить этот случай, есть RewriteCond и сделать команду перенаправления, есть RewriteRule ... [R=301] директива.

Пример, основанный на ваших данных:

RewriteCond %{REQUEST_URI} !^/((20|19)[0-9]{2})/([0-9]{2})/[0-9]{2}$ [NC]
RewriteRule ^/([0-9]{4})/([0-9]{2})/([0-9]{2})/(.*)$ http://<domain>/$4 [R=301,L]

Это не проверено, но я думаю, что это должно выполнять работу. Я использовал Quantifier ({2}), чтобы лучше указать, сколько чисел вы ожидаете. Рядом с этим в rewritecond я создал шаблон, который соответствует только 20 .. и 19 .. лет.

Первая строка (состояние, RewriteCond) проверяет, чтобы не соответствовать архивам и только при том, если не соответствует, правило для выполнения перенаправления будет выполнено. А RewriteRule в основном делает то же самое, что и ваш RedirectMatch директива.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с wordpress.stackexchange
scroll top