Шаблон перезаписи URL-адреса с помощью htaccess

#.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(.*) .