RewriteRule, который сохраняет параметры GET - PullRequest
8 голосов
/ 23 июля 2010

Что не так с этим правилом перезаписи?

RewriteRule ^api/(.+)$ api/index.php?url=$1 [L]

Я просто хочу, чтобы "index.php? Url =" был добавлен после api / и перед остальными параметрами get.

api/image/upload&arg1=1&text=lorem+ipsum

до

api/index.php?url=image/upload&arg1=1&text=lorem+ipsum

Что не так с (. +), Чтобы получить все после api /?

Ответы [ 3 ]

19 голосов
/ 23 июля 2010

Регулярное выражение в RewriteRule выполняется только с частью пути URL, а не с параметрами запроса.К счастью, есть флаг [QSA] для сохранения существующих параметров запроса.

0 голосов
/ 23 июля 2010

Я думаю, вы должны написать свое доменное имя перед регулярным выражением.Как это:

RewriteRule ^(.+).com/api/(.*)$ "$1.com/api/index.php?url=$2" [R=301,L]
0 голосов
/ 23 июля 2010

Вы что-то делаете, чтобы остановить бесконечную рекурсию?

 RewriteRule ^api/(.+)$ api/index.php?url=$1 [R=301,L]

или какой-то эквивалент

...