Перезапись URL, вызывающая 400 неверных запросов - PullRequest
0 голосов
/ 11 марта 2020

Я пытаюсь обойти HTTP 400 Bad Request с помощью Apache, который вызывается при обращении к этому URL (фактический домен удален):

http://example.com/nw/f/RUD/E.enc<space>

URL заканчивается реальным пробелом, что дает неверный запрос HTTP 400. Я не могу заставить клиентов, запрашивающих это, удалить пробел в URL, поэтому мне нужно переписать URL без пробела.

Я пробовал некоторые RewriteRules, такие как этот (после включения RewriteEngine):

RewriteRule "^/nw/f/RUD/E(.*)$" /nw/f/RUD/E.enc [P]

RewriteRule не имеет никакого эффекта и все еще дает HTTP 400.

Это даже происходит, когда я экранирую символ пробела вместо использования подстановочного знака в правиле , То же самое, если я пытаюсь заменить страницу ошибки HTTP 400, чтобы привести к фактическому содержанию (что было бы не идеально, поскольку есть 4 разных файла).

Как правильно переписать URL, удалив пробел на нем, не получая HTTP 400?

1 Ответ

0 голосов
/ 11 марта 2020

Ваш RewriteRule производит перенаправление l oop, поскольку .../E.enc<space> и .../E.enc оба соответствуют .../E(.*)$. Лучше использовать [R] edirect, хотя проксирование также работает.

RewriteEngine On
RewriteRule "^/nw/f/RUD/E\.enc $" /nw/f/RUD/E.enc [R,L]

или короче

RewriteEngine On
RewriteRule "^(/nw/f/RUD/E\.enc) $" $1 [R,L]
...