Как установить правило RewriteRule на основе поиска RewriteMap в Apache?Apache

Ответить
Anonymous
 Как установить правило RewriteRule на основе поиска RewriteMap в Apache?

Сообщение Anonymous »

Я пытаюсь создать правило перезаписи в Apache для сопоставления URL-адресов, не соответствующих определенному значению, полученному из RewriteMap.
У меня есть RewriteMap определяется следующим образом:

Код: Выделить всё

RewriteMap product_map txt:/path/to/product_map.txt
RewriteMap содержит такие записи:

Код: Выделить всё

55-55f /tv-backlight/55-55f
65-65ju /tv-backlight/65-65ju
Моя цель:
  • Извлечь ключ продукта из URL-адреса (например, 55-55f).< /li>
    Найдите ключ продукта в RewriteMap, чтобы получить соответствующий основной URL-адрес.
  • Сравните текущий REQUEST_URI с полученным основной URL-адрес из RewriteMap.
  • Примените статус 410 Gone для любого URL-адреса, который не соответствует основному URL-адресу.
Что я пробовал:
Попытка 1: использование базового RewriteCond

Код: Выделить всё

RewriteCond %{REQUEST_URI} ^.*/([^/]+)$
RewriteCond ${product_map:%1|NOT_FOUND} !=NOT_FOUND
RewriteCond %{REQUEST_URI} !=${product_map:%1|NOT_FOUND}

RewriteRule ^ - [G,L]
  • Ожидается: он должен извлечь ключ продукта, получить основной URL-адрес и сравнить их.
  • Результат: Ошибка, поскольку ${product_map:%1|NOT_FOUND в правой части RewriteCond не оценивается. Apache обрабатывает ${product_map:%1|NOT_FOUND} как литеральную строку.
Попытка 2: использование RewriteCond expr

Код: Выделить всё

RewriteCond %{REQUEST_URI} ^.*/([^/]+)$
RewriteCond ${product:%1|NOT_FOUND} ^(.*)$

RewriteCond expr "%{REQUEST_URI} != %2"
RewriteRule ^ - [G,L]
  • Ожидается: он должен извлечь ключ продукта, получить основной URL-адрес и сравнить их.
  • Результат: Ошибка, поскольку %2 в правой части RewriteCond не оценивается. Apache рассматривает %2 как литеральную строку.


Подробнее здесь: https://stackoverflow.com/questions/792 ... -in-apache
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Apache»