У меня есть 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
Поскольку ArgumentValues являются частью URL-пути, то любые буквальный ?
(знак вопроса) URL-адрес должен быть закодирован как %3F
в запросе. В противном случае незашифрованный ?
указывает начало строки запроса и фактически разделяет URL-адрес на две части - что и происходит здесь.
Как обходной путь, вместо этого вы можете сделать следующее:
RewriteCond %{THE_REQUEST} "^GET /([^\s]+)"
RewriteRule ^[^:]+: apex/f?p=alias:%1 [L]