#.htaccess #url-rewriting
Вопрос:
Мне может понадобиться помощь в переписывании patetrn следующего URL-адреса
/folder/subfolder/Product-Name--1235.html
к шаблону URL
/p/product-name/1235
Итак, — нужно заменить на/, а затем добавить число неизвестной длины.
Любая помощь / информация будет признательна!
Ответ №1:
Вы можете использовать следующее перенаправление :
RewriteEngine on
RewriteRule ^folder/subfolder/(. ?)--([0-9] ).html$ /p/$1/$2 [L,R]
Приведенное выше правило перенаправит любые URI формы /folder/subfolder/foobar--123.html
на /p/foobar/123
.
Просто поместите правило в верхнюю часть вашего корневого файла htaccess.
Комментарии:
1. Спасибо @Amit Verma, ты сделал мой день незабываемым! Это работает как заклинание :). Я думаю, я был близок к тому, чтобы попробовать
^(.*)[-]{2}(.*).html
вопрос с выражением reg: поскольку существует множество папок с вложенными папками, в которых я должен затем писать правила, могу ли я также попытаться игнорировать/folder/subfolder/
? НапримерRewriteRule ^(. ?)--([0-9] ).html$ /p/$1/$2 [L,R=301]
, что не работает.2. @Bacelo Вот общий шаблон, который должен работать для всех папок и вложенных
RewriteRule /([^/] )--([0-9] ).html$ /p/$1/$2 [L,R=301]
папок . Проверьте это после очистки кэша вашего браузера.3. Еще раз спасибо @Amit Verma — это работает идеально! Я загляну глубже в регулярное выражение, чтобы понять логику.
4. Другой вопрос: просто нашел какой-то текстовый шаблон в некоторых URL-адресах, где мне нужно добавить » — » между какой-то специальной текстовой частью, например
/folder/subfolder/ASpecial-Product-Name--1235.html
(до) и/p/A-Special-Product-Name/1235
после. Так что это может быть — я думаю — отдельный переписчик, который впоследствии хотел(.*)ASpecial(.*)
бы(.*)A-Special(.*)
.