MayorPlay
@MayorPlay
!developer

Как исправить ошибку при редиректе?

Пытаюсь редиректить старые урлы вида: https://example.com/blog/2020/10/27/alkogolnyj-delirij-simptomy-prichiny-lechenie/ в новые урлы вида: https://example.com/blog/article/alkogolnyj-delirij-simptomy-prichiny-lechenie/.
Вот код htaccess файла:
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# uploaded files
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [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).*) $1 [L]
RewriteRule  ^[_0-9a-zA-Z-]+/(.*\.php)$ $1 [L]
RewriteRule . index.php [L]
RewriteRule ^blog/[0-9]{4}/[0-9]{2}/[0-9]{2}/(.*)$ /blog/article/$1/? [L,R=301]
# END WordPress

Последнее правило работает правильно, спасибо куратору тега #htaccess, помог в прошлом вопросе, но здесь вырисовывается проблема, т.к. мы редиректим на другой адрес, сервер пытается найти страницу у себя, но не находит и срабатывает вот этот кусок:
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule  ^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*) $1 [L]
RewriteRule  ^[_0-9a-zA-Z-]+/(.*\.php)$ $1 [L]
RewriteRule . index.php [L]

Где в конце он выдергивает index.php и обратно редиректит на старый урл, и так по новой. Если убрать данную строку, то редиректить обратно не будет, но сервер будет выдавать ошибку о том, что указанный ресурс не был найден на сервере, что делать в данной ситуации?
  • Вопрос задан
  • 72 просмотра
Решения вопроса 1
shambler81
@shambler81 Куратор тега htaccess
я уже ответил в прошлом посте читай там
А вот тут я тебе дал пару коментов
# Включаем редиректы
RewriteEngine On
# по умолчанию путь будет начинаться с этой папки А не от корня физического дерева например /var/www/site.ru/web/upload
RewriteBase /
#  эмм ну мы тут удаляем индекс пхп, я бы еще добавил метод пост но  с вп не работал
RewriteRule ^index\.php$ - [L]

#видать от движка, но что-то кривое, по факту передаем в гет параметр все что перед files и admin
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

# если это файл 
RewriteCond %{REQUEST_FILENAME} -f [OR]
#  или директория OR меняет и на или
RewriteCond %{REQUEST_FILENAME} -d
#то  -
RewriteRule ^ - [L]

#не уверен что это не костыли поправьте меня кто с вп работал
RewriteRule  ^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*) $1 [L]
RewriteRule  ^[_0-9a-zA-Z-]+/(.*\.php)$ $1 [L]

#  тоже странное правило
RewriteRule . index.php [L]
# читай в прошлом посте
RewriteRule ^blog/[0-9]{4}/[0-9]{2}/[0-9]{2}/(.*)$ /blog/article/$1/? [L,R=301]
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы