У меня есть Rewrite Rule, какPHP - URL с несколькими параметрами и тем же именем вызывает неожиданное поведение
RewriteRule settings/([a-zA-Z0-9_]+)/?$ settings/?path=$1 [NC,L,QSA]
Это в основном принимает параметр пути и переписать URL, как этот http://localhost/settings/?path=abc
=>http://localhost/settings/abc
Но есть проблема! когда я обеспечиваю что-то вроде http://localhost/settings/abc/?path=xyz
параметра пути переписывается с А, и это открывает http://localhost/settings/abc/
с данными xyz
После дальнейшего копания я заметил, что проблема вызвана параметрами в самом URL. По умолчанию он собирает значение последнего параметра с тем же именем http://localhost/settings/account/?path=profile&path=account&path=profile
поэтому значение, которое я могу получить в этом случае для $_REQUEST['path']
, равно profile
. Как я могу просто выбрать первое значение из тех же параметров и игнорировать остальные?
Единственное, что я могу сделать, это удалить [QSA]
из RewriteRule
, что сделает исправление, но мне нужны другие параметры, переданные в url.
Как я могу это достичь?
Просто используйте большой! случайная строка в переписывании также сохраняет изменение переопределения малого. – JOUM
@JOUM Я действительно не понял, что вы пытались передать –
'Но проблема! ... 'можно зафиксировать с помощью этого (только для внутреннего использования, возможность переопределить это значение немного vurnebule для вашего приложения).Но часть «После дальнейшего копания» является дополнительной проблемой на вашей стороне, потому что вам следует помешать url, как это на первом месте (повторное использование одинаковых имен для аргументов). – JOUM