Перенаправления на основе структуры папок файлов

У нас есть веб-сайт, структура URL-адресов которого претерпевает серьезные изменения. Поскольку страниц много, я пытаюсь найти метод, который перенаправляет на основе файловой структуры запросов И отсутствия расширения файла.

Веб-страницы в основном имеют одну из двух версий:

  • mydomain.com/some-page-title
  • mydomain.com/multiple/folder/levels/some-other-page

Конечная цель:

  • mydomain.com/some-page-title.htm
  • mydomain.com/newfolder/some-other-page.htm

Я знаю, что могу назначить условие, указывающее на конкретное перенаправление для второго примера, как в верхнем блоке кода. И для первого примера я могу сделать простое перенаправление. Но, к сожалению, обе перезаписи влияют на 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, который говорит, что НЕ МОЖЕТ содержать определенную файловую структуру? Спасибо

Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
0
25
1

Ответы 1

Вы можете попробовать эти правила, которые не будут влиять друг на друга:

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] предотвратит выполнение второго правила перенаправления после первого перенаправления.

Обязательно очистите кеш браузера или используйте новый браузер для тестирования этого изменения.

Другие вопросы по теме