У меня есть URL :
www.example.com/PageName:ArgumentValue1,ArgumentValue2
Я хотел бы сделать перенаправление на
www.example.com/apex/f?p=alias:PageName:ArgumentValue1,ArgumentValue2
Я уже сделал..:
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule (.*)$ ./apex/f?p=alias:$1 [L]
Перенаправление работает правильно, за исключением случаев, когда Argumentvalue
имеет знак вопроса.
Есть ли способ принудительного перенаправления, даже если в аргументе есть знак вопроса?
PageName
, ArgumentValue1
и ArgumentValue2
являются динамическими переменными.
www.example.com/PageName:ArgumentValue1,ArgumentValue2
Поскольку ArgumentValue являются частью URL-пути, то любой литерал ?
(вопросительный знак) в запросе должен быть закодирован как % 3F
. В противном случае некодированный ?
указывает на начало строки запроса и фактически разделяет URL-адрес на два - что и происходит здесь.
В качестве обходного пути вы можете сделать следующее. следующее вместо этого:
RewriteCond %{THE_REQUEST} "^GET /([^\s]+)"
RewriteRule ^[^:]+: apex/f?p=alias:%1 [L]