Назад | Перейти на главную страницу

Как принудительно перенаправить, если URL-адрес содержит вопросительный знак в htaccess?

У меня есть 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]