Правила перезаписи Nginx не работают / игнорируются
В настоящее время я пытаюсь переписать это:
index.php?page=Example¶mX=1¶mY=2
в
index.php/Example/1/?paramY=2
Тем не менее, это не работает:
rewrite ^index\.php/\?page=Example¶mX=([0-9]+)¶mY=([0-9]+)$ /index.php/Example/$arg_paramX/?paramY=$arg_paramY permanent;
В apache2 я сейчас использую
RewriteCond %{QUERY_STRING} page=Example¶mX=([0-9]+)¶mY=([0-9]+)
RewriteRule ^index\.php$ /index.php/Example/%1/?paramY=%2 [R=permanent,L]
который работает.
1 ответ
Решение
Вы не можете сопоставить параметры строки запроса, как это в nginx, вы должны попытаться проверить отдельные аргументы, используя что-то вроде if
:
location /index.php {
if ($arg_page = "Example") {
rewrite ^ /index.php/Example/$arg_paramX/?paramY=$arg_paramY permanent;
}
}
Если вам абсолютно необходимо проверить это paramX
а также paramY
являются [0-9]+
, тогда вам нужно будет сделать что-то вроде хака для вложенных операторов IF, что-то вроде этого.