Конфликт правил перезаписи Apache

Я работаю над правилом перезаписи в Apache 2.4, в котором любой URL-адрес, заканчивающийся на .pdf /, должен добавлять параметр запроса и преобразовать его в .pdf? q = pdf.

Пример: http://www.example.com/us/elections.pdf/ должен преобразоваться в http: //www.example .com / us / sessions.pdf? q = pdf

Я попытался использовать следующее правило, и оно сработало

RedirectMatch 301 ^ (. *). pdf / $ 1.pdf? q = pdf

Проблема у нас также есть ссылки на веб-сайте, например {hostname} /us/elections.pdf/ node /img.thumbnail.png

Для этого приведенное выше правило добавляет q = pdf перед узлом и преобразует его, как {hostname} /us/elections.pdf?q=pdf_node_/img.thumbnail.png

Как я могу этого избежать?

Как я могу изменить свое правило таким образом, чтобы оно работало только для ссылок, у которых в конце есть .pdf /?

Любая помощь будет большой.

0
задан 21 December 2016 в 04:05
1 ответ

Если вы хотите, чтобы ваше регулярное выражение совпадало только тогда, когда оно оканчивается на '.pdf /', вы должны написать регулярное выражение соответствующим образом и включить конец привязки строки.

Изменение:

RedirectMatch 301 ^(.*).pdf/ $1.pdf?q=pdf

Кому:

RedirectMatch 301 ^(.*).pdf/$ $1.pdf?q=pdf

Обратите внимание на $ в конце регулярного выражения.

1
ответ дан 4 December 2019 в 16:24

Теги

Похожие вопросы