Ошибка шаблона переадресации .htaccess - PullRequest
0 голосов
/ 23 января 2019

У меня есть набор файлов, которые я хотел бы перенаправить на другой набор файлов

Пример списка файлов и файлов перенаправления

http://www.example.com/test-1-constant/   >  http://www.example.com/test-constant-1/
http://www.example.com/test-2-constant/   >  http://www.example.com/test-constant-2/
http://www.example.com/test-3-constant/   >  http://www.example.com/test-constant-3/

У меня есть этот код, который не дает требуемых результатов (не выбирает 1,2,3 между "-"

RewriteRule ^(test-)(.+)(-constant)$ /test-constant-$2 [L,NC,R=301]

Заранее благодарю за помощь

1 Ответ

0 голосов
/ 23 января 2019

Это, вероятно, то, что вы ищете:

RewriteEngine on
RewriteRule ^/?test-(\d+)-constant/?$ /test-constant-$1/ [NC,R=301]

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

Это правило будет работать также в конфигурации хоста http-серверов или в файле динамической конфигурации (файл стиля ".htaccess"). Вы определенно должны предпочесть первый вариант, если можете.

В своем вопросе вы пишете о "файлах", на которые нацелены эти URL. Выше набор правил принимает это как должное. Если это только (виртуальные) папки, и если фактические URL-адреса могут быть длиннее, вам нужно немного изменить шаблон:

RewriteEngine on
RewriteRule ^/?test-(\d+)-constant(/.*)$ /test-constant-$1$2 [NC,R=301]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...