Используя modrewrite, хотел бы разделить базовый URL, запросить URI и получить аргументы - PullRequest
0 голосов
/ 13 марта 2012

У меня сейчас есть modrewrite:

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.php/$1 [L]

Который добавляет исходный uri запроса в путь запроса index.php, если файл не существует. После некоторой манипуляции с $ _SERVER я могу получить запрос. Но для этого требуется много кода, поскольку $ _SERVER по-разному заполняется на разных серверах.

Я бы хотел вместо этого разделить URL-адрес следующим образом. Если у меня есть URL:

www.test.com/somedir/foo/bar?this=that

и файл htaccess находится в www.test.com/somedir/, я хотел бы, чтобы результирующий URL был:

www.test.com/somedir/index.php?r=foo/bar&this=that

с другой стороны, если в конце исходного URL не было переменных get, например:

www.test.com/somedir/foo/bar

Я бы хотел получить это вместо:

www.test.com/somedir/index.php?r=foo/bar

Я пытался поиграть с этим, но просто не могу понять это. Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

1 голос
/ 13 марта 2012

Попробуйте что-то вроде этого:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.*)$
RewriteRule .* index.php?r=%1 [QSA,L]
0 голосов
/ 13 марта 2012

Вы забыли флаг QSA, который добавляется к строке запроса вместо ее замены.

...