Я работаю над правилом перезаписи в 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 /?
Любая помощь будет большой.
Если вы хотите, чтобы ваше регулярное выражение совпадало только тогда, когда оно оканчивается на '.pdf /', вы должны написать регулярное выражение соответствующим образом и включить конец привязки строки.
Изменение:
RedirectMatch 301 ^(.*).pdf/ $1.pdf?q=pdf
Кому:
RedirectMatch 301 ^(.*).pdf/$ $1.pdf?q=pdf
Обратите внимание на $ в конце регулярного выражения.