Как @ hjpotter92, упомянутый в комментариях, шаблон без ведущий косая черта в файлах .htaccess. См Apache mod_rewrite Technical Details
В каждом каталоге контекста (то есть, в пределах .htaccess файлов и блоков каталогов), эти правила применяются после того, как URL уже переведен на имя файла. Из-за этого URL-путь, который mod_rewrite первоначально сравнивает с директивами RewriteRule, представляет собой полный путь файловой системы к переведенному имени файла с текущим каталогом (включая конечную косую черту), удаленную спереди.
Чтобы проиллюстрировать: Если правила находятся в /var/www/foo/.htaccess и обрабатывается запрос для /foo/bar/baz
, то выражение, подобное ^bar/baz$
, будет соответствовать.
RewriteRule
имеет аналогичную ноту в разделе «Переписывание за один каталог».
Так что ваше правило должно выглядеть
RewriteRule ^(.*?)-/(.*)$ /$1/$2 [R,L]
Если у вас есть эта RewriteRule
, вам не нужно больше RedirectMatch
.
Это будет 'RewriteRule^(. *?) -/(. *) $ ...' – hjpotter92