У нас есть веб-сайт, структура URL-адресов которого претерпевает серьезные изменения. Поскольку страниц много, я пытаюсь найти метод, который перенаправляет на основе файловой структуры запросов И отсутствия расширения файла.
Веб-страницы в основном имеют одну из двух версий:
Конечная цель:
Я знаю, что могу назначить условие, указывающее на конкретное перенаправление для второго примера, как в верхнем блоке кода. И для первого примера я могу сделать простое перенаправление. Но, к сожалению, обе перезаписи влияют на URL-адреса со структурой нескольких / файлов / папок, и я получаю два перенаправления: одно с новой папкой и одно с исходными папками.
RewriteCond %{REQUEST_URI} !\.[a-zA-Z0-9]{3,4}
RewriteCond %{DOCUMENT_ROOT}/multiple/$1 -d
RewriteCond %{REQUEST_URI} !/$
RewriteRule ^multiple/folder/levels/(.*)$ /learn/$1.htm [R=301,NC,L]
RewriteCond %{REQUEST_URI} !\.[a-zA-Z0-9]{3,4}
RewriteCond %{REQUEST_URI} !/$
RewriteRule ^(.*)$ $1.htm [R=301,NC,L]
Есть ли RewriteCond, который говорит, что НЕ МОЖЕТ содержать определенную файловую структуру? Спасибо

Вы можете попробовать эти правила, которые не будут влиять друг на друга:
RewriteEngine On
RewriteRule (?:/|\.[a-z0-9]{3,4})$ - [L,NC]
RewriteRule ^multiple/folder/levels/(.+)$ /learn/$1.htm [R=301,NC,L,NE]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/learn/ [NC]
RewriteRule ^(.+?)/?$ $1.htm [R=301,NE,L]
RewriteCond %{REQUEST_URI} !^/learn/ [NC] предотвратит выполнение второго правила перенаправления после первого перенаправления.
Обязательно очистите кеш браузера или используйте новый браузер для тестирования этого изменения.