Назад | Перейти на главную страницу

Разбор параметров получения в Apache Mod Rewrite?

Я использую фреймворк PHP Fat-Free (http://fatfree.sourceforge.net/) для разработки веб-сайта, и мне нужно использовать переменные GET, но они не будут анализироваться, потому что я использую Mod Rewrite.

Это текущее состояние моего файла .htaccess:

# Enable rewrite engine and route requests to framework
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L,QSA]

На данный момент я могу запросить страницу с фреймворком, перейдя на www.domain.com/mypage, но мне нужно использовать URL-адреса, такие как www.domain.com/mypage?variable=xyz

Как я могу это сделать? Заранее спасибо!

РЕДАКТИРОВАТЬ:

Я использовал журнал перезаписи с уровнем 3 и запросил www.domain.com/?x=1, и вот что было в журнале:

::1 - - [21/Aug/2010:21:09:28 +1200] [localhost/sid#1545150][rid#2054260/initial] (3) [perdir D:/Development/xampplite/htdocs/] strip per-dir prefix: D:/Development/xampplite/htdocs/ -> 
::1 - - [21/Aug/2010:21:09:28 +1200] [localhost/sid#1545150][rid#2054260/initial] (3) [perdir D:/Development/xampplite/htdocs/] applying pattern '.*' to uri ''
::1 - - [21/Aug/2010:21:09:28 +1200] [localhost/sid#1545150][rid#2054260/initial] (1) [perdir D:/Development/xampplite/htdocs/] pass through D:/Development/xampplite/htdocs/
::1 - - [21/Aug/2010:21:09:28 +1200] [localhost/sid#1545150][rid#205a278/subreq] (3) [perdir D:/Development/xampplite/htdocs/] strip per-dir prefix: D:/Development/xampplite/htdocs/index.php -> index.php
::1 - - [21/Aug/2010:21:09:28 +1200] [localhost/sid#1545150][rid#205a278/subreq] (3) [perdir D:/Development/xampplite/htdocs/] applying pattern '.*' to uri 'index.php'
::1 - - [21/Aug/2010:21:09:28 +1200] [localhost/sid#1545150][rid#205a278/subreq] (1) [perdir D:/Development/xampplite/htdocs/] pass through D:/Development/xampplite/htdocs/index.php
::1 - - [21/Aug/2010:21:09:28 +1200] [localhost/sid#1545150][rid#2058270/initial] (3) [perdir D:/Development/xampplite/htdocs/] strip per-dir prefix: D:/Development/xampplite/htdocs/favicon.ico -> favicon.ico
::1 - - [21/Aug/2010:21:09:28 +1200] [localhost/sid#1545150][rid#2058270/initial] (3) [perdir D:/Development/xampplite/htdocs/] applying pattern '.*' to uri 'favicon.ico'
::1 - - [21/Aug/2010:21:09:28 +1200] [localhost/sid#1545150][rid#2058270/initial] (2) [perdir D:/Development/xampplite/htdocs/] rewrite 'favicon.ico' -> 'index.php'
::1 - - [21/Aug/2010:21:09:28 +1200] [localhost/sid#1545150][rid#2058270/initial] (3) [perdir D:/Development/xampplite/htdocs/] add per-dir prefix: index.php -> D:/Development/xampplite/htdocs/index.php
::1 - - [21/Aug/2010:21:09:28 +1200] [localhost/sid#1545150][rid#2058270/initial] (2) [perdir D:/Development/xampplite/htdocs/] trying to replace prefix D:/Development/xampplite/htdocs/ with /
::1 - - [21/Aug/2010:21:09:28 +1200] [localhost/sid#1545150][rid#2058270/initial] (1) [perdir D:/Development/xampplite/htdocs/] internal redirect with /index.php [INTERNAL REDIRECT]
::1 - - [21/Aug/2010:21:09:28 +1200] [localhost/sid#1545150][rid#3b68870/initial/redir#1] (3) [perdir D:/Development/xampplite/htdocs/] strip per-dir prefix: D:/Development/xampplite/htdocs/index.php -> index.php
::1 - - [21/Aug/2010:21:09:28 +1200] [localhost/sid#1545150][rid#3b68870/initial/redir#1] (3) [perdir D:/Development/xampplite/htdocs/] applying pattern '.*' to uri 'index.php'
::1 - - [21/Aug/2010:21:09:28 +1200] [localhost/sid#1545150][rid#3b68870/initial/redir#1] (1) [perdir D:/Development/xampplite/htdocs/] pass through D:/Development/xampplite/htdocs/index.php

Не уверены, поможет ли это?

QSA работает не совсем так, см. Здесь flags_qsa. Я думаю, вам нужно захватить новую строку запроса, у вас ее нет.

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

# Enable rewrite engine and route requests to framework
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php?$1 [L,QSA]

Возможно, вам потребуется добавить ведущую / к index.php?$1 в зависимости от того, где расположены правила перезаписи.

В QSA flag уже должен позаботиться об этом. Активируйте свой RewriteLog и посмотрите, как URL-адреса переписываются внутри.