подкаталоги mod_rewrite как переменные - PullRequest
0 голосов
/ 26 августа 2011

Я пытаюсь переписать "/products/MFG/date/SKU.html" в "MFG-SKU.html"

Наше текущее переписывание ниже переписывает только в "SKU.html".

RewriteCond %{REQUEST_URI} ^/products/
RewriteRule /([^/]*)$ /$1 [R=301,NC,L]

Как я могу получить доступ к MFG в качестве переменной для включения в SKU?

Пример URL будет:

http://example.com/products/MFG/2010-04-01/1234.html => http://example.com/MFG-1234.html

MFG и 1234 - переменные, которые могли бы измениться.

1 Ответ

0 голосов
/ 27 августа 2011

Ну, этот должен сделать работу за вас:

RewriteRule ^products/([^/]+)/[0-9-]+/([^/]+)\.html$ $1-$2.html [R=301,L]
  1. Он будет перенаправлять /products/MFG/2010-04-01/1234.html на /MFG-1234.html.

  2. Не проверяет параметры (MFG, SKU, дата):

    • Часть MFG может быть чем угодно в пределах 1 сегмента пути (что означает любой символ, кроме косой черты /): это могут быть буквы, цифры, символы Unicode и т. Д. Если вам нужно ограничить его - просто измените шаблон ([^/]+) к любым ограничениям, которые вы хотите иметь;
    • Часть date имеет очень простую проверку - разрешены только цифры и -. Так что даже 123456-09876 будет работать. Еще раз - если вам нужна более точная проверка, просто измените шаблон;
    • Часть SKU - та же проверка на месте, что и для MFG part.
  3. Это правило предназначено для размещения в .htaccess в корневой папке сайта. При размещении в другом месте может потребоваться небольшая настройка.

...