Для настройки редиректа 301 для всех страниц со структурой URL вида `/folder/1-2/p1.php`, `/folder/1-2/3-4/p1.php` и так далее, где `/folder/` является постоянным компонентом, а последующие сегменты могут быть различными, можно использовать следующий `RewriteRule` в файле `.htaccess`, который должен быть размещён в корне вашего сайта:
```apache
RewriteEngine On
RewriteRule ^folder/(.+)/p1\.php$ /folder/p1/ [R=301,L]
```
Это правило будет работать следующим образом:
- `^folder/(.+)/p1\.php$` — этот паттерн поиска соответствует URL, начинающемуся на `/folder/`, за которым следует один или более любых символов (`.+`), затем `/p1.php`. Символ доллара (`$`) в конце гарантирует, что строка точно заканчивается на `/p1.php`.
- `(.+)` — скобки создают подмаску, которая позволяет ссылаться на часть адреса URL, которая совпадает с паттерном внутри скобок, но в данном случае нам не нужно ссылаться на эту часть URL, поэтому эту подмаску можно опустить.
- `[R=301,L]` — флаги для правила, где `R=301` означает перенаправление с HTTP статусом 301 (Moved Permanently), а `L` означает, что это последнее правило, которое будет обработано, если текущий запрос совпадает с паттерном.
Если вы хотите сделать редирект, игнорируя наличие и количество промежуточных подпапок, следующее правило сработает по-другому:
```apache
RewriteEngine On
RewriteRule ^folder/.+/p1\.php$ /folder/p1/ [R=301,L]
```
Здесь `^folder/.+/p1\.php$` соответствует любому URL, который начинается на `/folder/`, имеет любой путь (как минимум один символ, обозначенный `.+`) и заканчивается на `/p1.php`. При совпадении любой URL с этим паттерном будет перенаправлен на `/folder/p1/`.
Учтите, что изменения в файле .htaccess могут потребовать некоторого времени для применения, особенно если используется кэширование, и не забудьте очистить кэш браузера для тестирования, так как старые редиректы могут сохраняться в кэше браузера.