301 RewriteRule идеально работает в OpenLiteSpeed, но только в 95% случаев

#regex #.htaccess #mod-rewrite #http-status-code-301 #litespeed

#регулярное выражение #.htaccess #мод-перезапись #http-status-code-301 #litespeed

Вопрос:

Эта установка WordPress ранее имела структуру постоянных ссылок year/mo/day/post-name , но позже была изменена, чтобы использовать только название записи. Этот 301 RewriteRule был добавлен в начало htaccess, и он отлично работает по большей части, но по-прежнему не работает по нескольким ссылкам, оставляя значение дня в URL.

 RewriteRule ([0-9]{4})/([0-9]{2})/(.*) domain.com/$3 [R=301,L]
  

Я не могу понять, что является причиной этого, куда большинство перенаправляетdomain.com/post-name как и ожидалось, но некоторые возвращаются как domain.com/08/post-name например.

Есть ли проблема с регулярным выражением, которое упускается из виду?

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

1. вы имеете в виду «domain.com/08/post-name » не перенаправляет или «/2020/08/08/ post-name «перенаправлено на «/08 / post-name» ?

2. @qtwrk Извините, это второй. «/2020/08/08/ post-name» перенаправляет на «/ 08 / post-name»

Ответ №1:

Если все ваши сообщения имеют одинаковый формат, как в /2020/01/01/post-name

затем попробуйте использовать

 RewriteRule ([0-9]{4})/([0-9]{2})/([0-9]{2})/(.*) https://example.com/$4 [R=301,L]
  

Если вы перепутали URL для обоих /2020/01/01/post-name и /2020/01/post-name

затем попробуйте использовать

 RewriteRule ([0-9]{4})/([0-9]{2})/([0-9]{2})/(.*) https://example.com/$4 [R=301,L]
RewriteRule ([0-9]{4})/([0-9]{2})/(.*) https://example.com/$3 [R=301,L]