Проблема с доступом к переменной .htaccess в методе PHP с косой чертой - PullRequest
0 голосов
/ 23 января 2020

У меня проблема с доступом к переменной.

Мой метод запрашивается следующим образом:

http://example.com/method/parameter

У меня есть конкретный c .htaccess файл, который управляет этим:

<ifmodule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([^/]+)/?$ index.php?categoryId=$1 [QSA,L] 
</ifmodule>

Это позволяет * Переменная 1010 * для передачи форвардом sla sh.

Вот сделка, я пытаюсь передать другую переменную, добавив еще одного форварда sla sh. Полный запрос будет выглядеть примерно так:

http://example.com/method/parameter/orderby

Я попытался изменить файл .htaccess на:

<ifmodule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([^/]+)/?$ index.php?categoryId=$1?orderBy=$2 [QSA,L] 
</ifmodule>

Не было никаких изменений. Я что-то упустил?

1 Ответ

2 голосов
/ 23 января 2020

Для захвата нескольких параметров строки запроса в массиве $_GET в index.php необходимо изменить RewriteRule на следующее:

RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ index.php?method=$1&param=$2&orderby=$3 [L,QSA]

Я использовал method , param и orderby, как вы указали в вопросе.

Просто повторите шаблон ([^/]+)/ для каждого параметра строки запроса, который вы хотите добавить, и ссылайтесь на них соответственно с помощью $1, $2 , $3 et c.

Примечание: в исходном RewriteRule вы неправильно отформатировали строку запроса, вам нужно использовать & между параметрами, а не ? (знак вопроса используется в качестве разделителя и не является частью строки запроса.).

Приведенное выше решение требует трех параметров, если, однако, вы хотите сделать параметры необязательными, вы можете использовать ? в шаблоне следующим образом:

RewriteRule ^([^/]+)?/?([^/]+)?/?([^/]+)?/?$ index.php?categoryId=$1&orderBy=$2&something=$3 [L,QSA]

Знак вопроса делает предыдущий токен в регулярном выражении необязательным.

...